(overrides = {})
| 14 | |
| 15 | function filterValueList(primaryArr, legacyStr) { |
| 16 | const out = []; |
| 17 | if (Array.isArray(primaryArr)) { |
| 18 | for (const x of primaryArr) { |
| 19 | if (x != null && String(x).trim() !== "") out.push(String(x).trim()); |
| 20 | } |
| 21 | } |
| 22 | if (!out.length && legacyStr != null && String(legacyStr).trim() !== "") { |
| 23 | out.push(String(legacyStr).trim()); |
| 24 | } |
| 25 | return out; |
| 26 | } |
| 27 | |
| 28 | /** Snapshot of sidebar / query-builder filters (same atoms as View Entire Library). */ |
| 29 | function getCurrentLibraryFilters() { |
| 30 | const designer = document.getElementById("designer-select")?.value || ""; |
| 31 | const license = document.getElementById("license-select")?.value || ""; |
| 32 | const parentModel = document.getElementById("parent-select")?.value || ""; |
| 33 | const printStatus = document.getElementById("printed-select")?.value || "all"; |
| 34 | const newStatus = document.getElementById("new-select")?.value || "all"; |
| 35 | const favoriteStatus = document.getElementById("favorite-select")?.value || "all"; |
| 36 | const ratingStatus = document.getElementById("rating-select")?.value || "all"; |
| 37 | const ratingMinStatus = document.getElementById("rating-min-select")?.value || "all"; |
| 38 | const tagFilter = document.getElementById("tag-filter")?.value || ""; |
| 39 | const filamentFilter = document.getElementById("filament-filter")?.value || ""; |
| 40 | const fileType = document.getElementById("filetype-select")?.value || ""; |
| 41 | |
| 42 | const filters = { |
| 43 | designerInverted: window.invertedFilters?.designer || false, |
| 44 | dateAdded: window.dateAddedFilter || null, |
| 45 | licenseInverted: window.invertedFilters?.license || false, |
| 46 | parentModelInverted: window.invertedFilters?.parentModel || false, |
| 47 | printed: printStatus === "all" ? undefined : printStatus, |
| 48 | isNew: newStatus === "all" ? undefined : newStatus, |
| 49 | favorite: favoriteStatus === "all" ? undefined : favoriteStatus, |
| 50 | rating: ratingStatus === "all" ? undefined : ratingStatus, |
| 51 | ratingMin: ratingMinStatus === "all" ? undefined : ratingMinStatus, |
| 52 | tagInverted: window.invertedFilters?.tag || false, |
| 53 | filamentInverted: window.invertedFilters?.filament || false, |
| 54 | fileType, |
| 55 | searchInverted: window.invertedFilters?.search || false, |
| 56 | directory: window.currentDirectoryFilter |
| 57 | }; |
| 58 | if (typeof window.queryBuilderAppendExtendedFilterFields === "function") { |
| 59 | window.queryBuilderAppendExtendedFilterFields(filters); |
| 60 | } else { |
| 61 | const searchInputValue = (document.getElementById("search-filter-input")?.value || "").trim(); |
| 62 | const resolvedSearchTerm = searchInputValue || lastSearchTerm || ""; |
| 63 | filters.designer = designer; |
| 64 | filters.license = license; |
| 65 | filters.parentModel = parentModel; |
| 66 | filters.tag = tagFilter; |
| 67 | if (filamentFilter) filters.filament = filamentFilter; |
| 68 | filters.search = resolvedSearchTerm; |
| 69 | } |
| 70 | return filters; |
| 71 | } |
| 72 | |
| 73 | function libraryFiltersAreActive(filters) { |
no outgoing calls
no test coverage detected