diff --git a/card-sort.html b/card-sort.html
index 8bfc37a..8dbe263 100644
--- a/card-sort.html
+++ b/card-sort.html
@@ -200,7 +200,7 @@
dragEnabled: true,
dragSort: true,
dragHandle: '.category-drag-handle',
- });
+ }).on('layoutEnd', () => categoriesGrid.synchronize());
const cardGrids = [uncategorizedCardsGrid];
const debouncedUpdateData = debounce(updateData, 500);
@@ -314,9 +314,17 @@
}
function updateData() {
+ let untitledCounter = 0;
data = {};
for (const categoryElement of document.querySelectorAll('.category')) {
- const categoryName = categoryElement.querySelector('.title').value;
+ let categoryName = categoryElement.querySelector('.title').value;
+ if ( ! categoryName) {
+ untitledCounter += 1;
+ categoryName = `(Untitled ${untitledCounter})`;
+ }
+ if (categoryName in data) {
+ categoryName = getUniqueCategoryName(categoryName, data);
+ }
data[categoryName] = [];
for (const cardElement of categoryElement.querySelectorAll('.card')) {
data[categoryName].push(cardElement.textContent);
@@ -329,6 +337,16 @@
data[settingsFlagsKey] = saveSettings(settings);
}
+ function getUniqueCategoryName(originalName, data) {
+ let candidateName = originalName
+ let counter = 1;
+ while (candidateName in data) {
+ counter += 1;
+ candidateName = `${originalName} (${counter})`;
+ }
+ return candidateName;
+ }
+
async function shareResult() {
updateData();
const dataString = await saveToString(data);
diff --git a/index.html b/index.html
index 7006db5..52d9908 100644
--- a/index.html
+++ b/index.html
@@ -106,7 +106,7 @@
function textToArray(text) {
let resultArray;
- if (text.includes('\n')) {
+ if (text.trim().includes('\n')) {
resultArray = text.split('\n');
}
else {