Fix tags handling that was broken with filter

This commit is contained in:
Théo Marchal 2021-03-04 02:14:51 +01:00
parent ab5710e69e
commit f37a2fde6e
2 changed files with 49 additions and 36 deletions

View File

@ -235,10 +235,56 @@ jQuery(document).ready(function($)
{
generateMenu(originalAvailableOptions);
availableOptions = gatherData();
updateMenu(availableOptions);
userActionHandle(availableOptions);
URLGeneration(availableOptions);
URLGeneration(originalAvailableOptions);
updateMenu(availableOptions);
// handle tags
function handleTags()
{
$('.box.tags .item-cont').delegate('select[name="tag"]', 'change', function()
{
paramTag = []; // collect all tags from all dropdowns
$('.box.tags .item-cont select[name="tag"]').each(function()
{
if (paramTag.indexOf(this.value) === -1 && this.value != "")
paramTag.push(this.value);
});
if (this.value != "")
{
createNewElem = true; // if we modify an existing element to a value, we don't delete it
$('.box.tags select').each(function()
{
if ($(this).val() == "")
createNewElem = false;
});
if (createNewElem)
{
html = '<span><span class="inline">&#x203B;&nbsp;</span><select name="tag">';
html += '<option value="">Aucun</option>';
for (a of originalAvailableOptions.tags)
html += '<option value="' + a + '">' + a + '</option>';
html += '</select></span>';
$(".box.tags .item-cont").append(html);
}
}
else
{
// if the element has no value, we delete it
$(this).parent().remove();
}
selectedOptions = gatherURLdata();
data = originalData;
filterData(selectedOptions);
availableOptions = [];
availableOptions = gatherData();
updateMenu(availableOptions);
});
}
handleTags();
function visualFilterCheckboxItem(name, param)
{
@ -285,7 +331,6 @@ jQuery(document).ready(function($)
visualFilterCheckboxItem("help", paramHelp);
visualFilterListItem("place", paramPlace);
visualFilterListItem("tag", paramTag);
});
/*********************/

View File

@ -199,7 +199,7 @@ function URLGeneration(availableOptions)
html += '</select></span>';
$(selector + ' .item-cont').append(html);
}
if (!param.includes("all") && param.length >= 1)
if (!param.includes("all") && param.length >= 1 && name != "place")
{
html = '<span><span class="inline">&#x203B;&nbsp;</span><select name="' + name + '">';
html += '<option value="">Aucun</option>';
@ -253,37 +253,6 @@ function userActionHandle(availableOptions)
});
}
// for tags
function listOptionSelected(selector, name, names)
{
$(selector).on('change', 'select[name="' + name + '"]', function()
{
if (this.value != "")
{
createNewElem = true; // if we modify an existing element to a value, we don't delete it
$(selector + ' select').each(function()
{
if ($(this).val() == "")
createNewElem = false;
});
if (createNewElem)
{
html = '<span><span class="inline">&#x203B;&nbsp;</span><select name="' + name + '">';
html += '<option value="">Aucun</option>';
for (a of names)
html += '<option value="' + a + '">' + a + '</option>';
html += '</select></span>';
$(selector + " .item-cont").append(html);
}
}
else
{
// if the element has no value, we delete it
$(this).parent().remove();
}
});
}
$("input").prop("checked", false); // by default, uncheck all options
allCheckBoxSelected("years", "year");
allCheckBoxSelected("months", "month");
@ -294,7 +263,6 @@ function userActionHandle(availableOptions)
allCheckBoxSelected("tags", "tag");
allCheckBoxSelected("photos", "photo");
allCheckBoxSelected("helps", "help");
listOptionSelected(".box.tags", "tag", availableOptions.tags);
// special case for photos with "exist"
$('input[id="exist"]').click(function()