diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index e187382341b6aece13d412413ae983d40129a007..76553d603cf9c85b4a106c1d84952c517b694a7b 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -133,60 +133,19 @@ App.UI.incubator = function() { */ if (0 < _SL) { const sortingBar = document.createElement("div"); + sortingBar.id = "sorting-bar"; sortingBar.classList.add("incubator-underscore"); V.sortIncubatorList = V.sortIncubatorList || 'Unsorted'; - App.UI.DOM.appendNewElement("span", sortingBar, "Sorting: ", "note"); - - let qlIncubatorSort = document.createElement("span"); - qlIncubatorSort.classList.add("bold"); - qlIncubatorSort.id = "qlIncubatorSort"; - qlIncubatorSort.append(V.sortIncubatorList); - sortingBar.append(qlIncubatorSort); - sortingBar.append(`. `); linkArray = []; - linkArray.push( - App.UI.DOM.link( - "Name", - () => { - V.sortIncubatorList = 'Name'; - sortByName(); - jQuery(`#qlIncubatorSort`).empty().append(V.sortIncubatorList); - } - ) - ); - linkArray.push( - App.UI.DOM.link( - "Reserved Incubator Spots", - () => { - V.sortIncubatorList = 'Reserved Incubator Spots'; - sortByReservedSpots(); - jQuery(`#qlIncubatorSort`).empty().append(V.sortIncubatorList); - } - ) - ); - linkArray.push( - App.UI.DOM.link( - "Pregnancy Week", - () => { - V.sortIncubatorList = 'Pregnancy Week'; - sortByPregnancyWeek(); - jQuery(`#qlIncubatorSort`).empty().append(V.sortIncubatorList); - } - ) - ); - linkArray.push( - App.UI.DOM.link( - "Number of Children", - () => { - V.sortIncubatorList = 'Number of Children'; - sortByPregnancyCount(); - jQuery(`#qlIncubatorSort`).empty().append(V.sortIncubatorList); - } - ) - ); - sortingBar.append(App.UI.DOM.generateLinksStrip(linkArray)); + const sortingOptions = new Map([ + ["Name", sortByName], + ["Reserved Incubator Spots", sortByReservedSpots], + ["Pregnancy Week", sortByPregnancyWeek], + ["Number of Children", sortByPregnancyCount], + ]); + sortingBar.append(sortingBarFunc(sortingOptions)); el.append(sortingBar); } @@ -476,6 +435,33 @@ App.UI.incubator = function() { jQuery("#content-tank-babies").empty().append(tankBabies()); } + /** + * @returns {DocumentFragment} + */ + function sortingBarFunc(sortingOptions) { + const el = new DocumentFragment(); + App.UI.DOM.appendNewElement("span", el, "Sorting: ", "note"); + const linkArray = []; + for (const [title, func] of sortingOptions) { + if (V.sortIncubatorList === title) { + linkArray.push(App.UI.DOM.makeElement("span", title, "bold")); + } else { + linkArray.push( + App.UI.DOM.link( + title, + () => { + V.sortIncubatorList = title; + func(); + jQuery("#sorting-bar").empty().append(sortingBarFunc(sortingOptions)); + } + ) + ); + } + } + el.append(App.UI.DOM.generateLinksStrip(linkArray)); + return el; + } + function sortByName() { let $sortedIncubatorPossibles = $('#qlIncubator p.possible').detach(); $sortedIncubatorPossibles = sortDomObjects($sortedIncubatorPossibles, 'data-name');