Browse Source

Fix duplicate category names conflicting

main
indigane 4 years ago committed by GitHub
parent
commit
a4833008b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      card-sort.html
  2. 2
      index.html

22
card-sort.html

@ -200,7 +200,7 @@
dragEnabled: true, dragEnabled: true,
dragSort: true, dragSort: true,
dragHandle: '.category-drag-handle', dragHandle: '.category-drag-handle',
}); }).on('layoutEnd', () => categoriesGrid.synchronize());
const cardGrids = [uncategorizedCardsGrid]; const cardGrids = [uncategorizedCardsGrid];
const debouncedUpdateData = debounce(updateData, 500); const debouncedUpdateData = debounce(updateData, 500);
@ -314,9 +314,17 @@
} }
function updateData() { function updateData() {
let untitledCounter = 0;
data = {}; data = {};
for (const categoryElement of document.querySelectorAll('.category')) { 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] = []; data[categoryName] = [];
for (const cardElement of categoryElement.querySelectorAll('.card')) { for (const cardElement of categoryElement.querySelectorAll('.card')) {
data[categoryName].push(cardElement.textContent); data[categoryName].push(cardElement.textContent);
@ -329,6 +337,16 @@
data[settingsFlagsKey] = saveSettings(settings); 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() { async function shareResult() {
updateData(); updateData();
const dataString = await saveToString(data); const dataString = await saveToString(data);

2
index.html

@ -106,7 +106,7 @@
function textToArray(text) { function textToArray(text) {
let resultArray; let resultArray;
if (text.includes('\n')) { if (text.trim().includes('\n')) {
resultArray = text.split('\n'); resultArray = text.split('\n');
} }
else { else {

Loading…
Cancel
Save