function Search(searchterm, fullmedarbejdere, listmedarbejdere) { var filteretMedarbejder; if (searchterm == "" && listmedarbejdere == null) { return null; } if (listmedarbejdere != null && listmedarbejdere.length > 0) { filteretMedarbejder = listmedarbejdere; } else { filteretMedarbejder = fullmedarbejdere; } if (searchterm != null && searchterm.trim() != "") { filteretMedarbejder = FilterSearchTerm(filteretMedarbejder, searchterm); if (filteretMedarbejder != null && filteretMedarbejder.length > 0) { return SortMedarbejderRelevans(filteretMedarbejder, searchterm.trim()); } } return filteretMedarbejder; } function SortMedarbejderRelevans(filteretMedarbejder, searchterm) { //Splitter i 2 arrays var filteretMedarbejderRelevans = new Array(); var filteretMedarbejderNameSortorder = new Array(); for (let i = 0; i < filteretMedarbejder.length; i++) { let currentMedarbejder = filteretMedarbejder[i]; //Hvis relevans if (currentMedarbejder.SoegNavneFuld.startsWith(searchterm)) { filteretMedarbejderRelevans.push(currentMedarbejder); } else { filteretMedarbejderNameSortorder.push(currentMedarbejder); } } //Laver alfabetisk sortering if (filteretMedarbejderRelevans != null && filteretMedarbejderRelevans.length > 0) { filteretMedarbejderRelevans = filteretMedarbejderRelevans.sort((a, b) => { if (a.SoegNavneFuld < b.SoegNavneFuld) { return -1; } }); } //Laver alfabetisk sortering if (filteretMedarbejderNameSortorder != null && filteretMedarbejderNameSortorder.length > 0) { filteretMedarbejderNameSortorder = filteretMedarbejderNameSortorder.sort((a, b) => { if (a.SoegNavneFuld < b.SoegNavneFuld) { return -1; } }); } var mergeResult = filteretMedarbejderRelevans.concat(filteretMedarbejderNameSortorder); return mergeResult; } function SortMedarbejderList(filteretMedarbejder) { //Splitter i 2 arrays var filteretMedarbejderSortorder = new Array(); var filteretMedarbejderNameSortorder = new Array(); for (let i = 0; i < filteretMedarbejder.length; i++) { let currentMedarbejder = filteretMedarbejder[i]; if (currentMedarbejder.ComputedSortOrder != null && currentMedarbejder.ComputedSortOrder != "") { filteretMedarbejderSortorder.push(currentMedarbejder); } else { filteretMedarbejderNameSortorder.push(currentMedarbejder); } } if (filteretMedarbejderSortorder != null && filteretMedarbejderSortorder.length > 0) { filteretMedarbejderSortorder = filteretMedarbejderSortorder.sort((a, b) => { if (a.ComputedSortOrder < b.ComputedSortOrder) { return -1; } }); } if (filteretMedarbejderNameSortorder != null && filteretMedarbejderNameSortorder.length > 0) { filteretMedarbejderNameSortorder = filteretMedarbejderNameSortorder.sort((a, b) => { if (a.SoegNavneFuld < b.SoegNavneFuld) { return -1; } }); } var mergeResult = filteretMedarbejderSortorder.concat(filteretMedarbejderNameSortorder); return mergeResult } function SearchByFilter(medarbejdere, afdelingnr, udvalg, hb, centerkey, enhedskey) { var filteretMedarbejder = new Array(); if (hb == "True") { filteretMedarbejder = FilterHB(medarbejdere); } else { if (afdelingnr > 0) { filteretMedarbejder = FilterAfdeling(medarbejdere, afdelingnr.toString()); } else { filteretMedarbejder = FilterHovedkontoret(medarbejdere); } if (udvalg != "") { filteretMedarbejder = FilterUdvalg(medarbejdere, udvalg); } if (centerkey != "") { filteretMedarbejder = FilterCenter(filteretMedarbejder, centerkey); } if (enhedskey != "") { filteretMedarbejder = FilterEnhed(filteretMedarbejder, enhedskey, false); } } if (filteretMedarbejder != null && filteretMedarbejder.length > 0) { return SortMedarbejderList(filteretMedarbejder); } return filteretMedarbejder; } function FilterEnhed(medarbejdere, enhedskey, kunhovedkontoret) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if ((kunhovedkontoret && currentMedarbejder.Afdeling == "Hovedkontoret") || !kunhovedkontoret) { if (currentMedarbejder.FindMedarbejder_Type != "lokalekstern" && currentMedarbejder.Enheder != null && currentMedarbejder.Enheder.length > 0) { for (let e = 0; e < currentMedarbejder.Enheder.length; e++) { let currentEnhed = currentMedarbejder.Enheder[e]; if (currentEnhed.EnhedsKey != null && currentEnhed.EnhedsKey != "" && currentEnhed.EnhedsKey == enhedskey && (currentMedarbejder.FindMedarbejder_UdvalgItemID == null || (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID == ""))) filteretMedarbejder.push(currentMedarbejder); } } } } return filteretMedarbejder; } function FilterHB(medarbejdere) { filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.MedlemafHB != null && currentMedarbejder.MedlemafHB == true && (currentMedarbejder.FindMedarbejder_UdvalgItemID == null || (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID == ""))) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function FilterCenter(medarbejdere, centerkey) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.FindMedarbejder_Type != "lokalekstern" && currentMedarbejder.Afdeling == "Hovedkontoret" && currentMedarbejder.Center != null && currentMedarbejder.Center.CenterKey != null && currentMedarbejder.Center.CenterKey != "" && currentMedarbejder.Center.CenterKey == centerkey && (currentMedarbejder.FindMedarbejder_UdvalgItemID == null || (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID == ""))) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function FilterAfdeling(medarbejdere, afdelingsnr) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.FindMedarbejder_Type != "lokalekstern" && currentMedarbejder.Afdeling != "Hovedkontoret" && currentMedarbejder.Afdelingsnr != null && currentMedarbejder.Afdelingsnr != "" && currentMedarbejder.Afdelingsnr == afdelingsnr.trim()) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function FilterHovedkontoret(medarbejdere) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.FindMedarbejder_Type != "lokalekstern" && currentMedarbejder.Afdeling == "Hovedkontoret" && (currentMedarbejder.FindMedarbejder_UdvalgItemID == null || (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID == ""))) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function FilterUdvalg(medarbejdere, udvalg) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID != "" && currentMedarbejder.FindMedarbejder_UdvalgItemID.toUpperCase() == udvalg.toUpperCase()) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function FilterSearchTerm(medarbejdere, searchterm) { var filteretMedarbejder = new Array(); for (let i = 0; i < medarbejdere.length; i++) { let currentMedarbejder = medarbejdere[i]; if (currentMedarbejder.FindMedarbejder_Type != "lokalekstern" && searchterm != null && searchterm.trim() != "" && MatchSearchTerm(currentMedarbejder, searchterm.trim()) && (currentMedarbejder.FindMedarbejder_UdvalgItemID == null || (currentMedarbejder.FindMedarbejder_UdvalgItemID != null && currentMedarbejder.FindMedarbejder_UdvalgItemID == ""))) { filteretMedarbejder.push(currentMedarbejder); } } return filteretMedarbejder; } function MatchSearchTerm(currentMedarbejder, searchterm) { if (currentMedarbejder.SoegNavneFuld != null) { if (currentMedarbejder.SoegNavneFuld.startsWith(searchterm)) { return true; } else if (currentMedarbejder.SoegNavneFuld.indexOf(searchterm) > 0) { //Vi tjekker om tegnet foran er et mellemrum, så er der match let index = currentMedarbejder.SoegNavneFuld.indexOf(searchterm); if (currentMedarbejder.SoegNavneFuld.charAt(index - 1) != null && currentMedarbejder.SoegNavneFuld.charAt(index - 1) == " ") { return true; } } } else if (currentMedarbejder.SoegNavne != null && currentMedarbejder.SoegNavne.length > 0) { for (let m = 0; m < currentMedarbejder.SoegNavne.length; m++) { let currentMedarbejderSplitNavn = currentMedarbejder.SoegNavne[m]; if (currentMedarbejderSplitNavn != null && currentMedarbejderSplitNavn.startsWith(searchterm)) { return true; } } } return false; } function TableSort(sortObject, root, medarbejdere) { //alert(sortObject.sortBy + ":" + sortObject.sortDesc + ":length " + medarbejdere.length); if (medarbejdere != null && medarbejdere.length > 0) { if (sortObject.sortBy == "Medarbejder") { medarbejdere = medarbejdere.sort((a, b) => { if (a.SoegNavneFuld < b.SoegNavneFuld) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } else if (sortObject.sortBy == "Stilling") { medarbejdere = medarbejdere.sort((a, b) => { if (a.Stilling < b.Stilling) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } else if (sortObject.sortBy == "E-Mail") { medarbejdere = medarbejdere.sort((a, b) => { if (a.EMail < b.EMail) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } else if (sortObject.sortBy == "Afdeling") { medarbejdere = medarbejdere.sort((a, b) => { if (a.Afdeling < b.Afdeling) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } } root.$emit('datatable:sorting-done'); return medarbejdere; } function TableSortKlub(sortObject, root, medarbejdere) { //alert(sortObject.sortBy + ":" + sortObject.sortDesc + ":length " + medarbejdere.length); if (medarbejdere != null && medarbejdere.length > 0) { if (sortObject.sortBy == "Medarbejder") { medarbejdere = medarbejdere.sort((a, b) => { if (a.Navn < b.Navn) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } else if (sortObject.sortBy == "Stillingsbetegnelse") { medarbejdere = medarbejdere.sort((a, b) => { if (a.Stilling < b.Stilling) { return -1; } }); if (sortObject.sortDesc) { medarbejdere = medarbejdere.reverse(); } } } root.$emit('datatable:sorting-done'); return medarbejdere; }