search by fields, exclude words

This commit is contained in:
Marlon Erler
2024-07-17 14:25:11 +00:00
parent 94799e7e3e
commit e41bbd5acb
5 changed files with 506 additions and 469 deletions
+31 -15
View File
@@ -508,9 +508,9 @@
createObject: "create object", createObject: "create object",
untitledObject: "Untitled Object", untitledObject: "Untitled Object",
filterObjects: "Filter Objects", filterObjects: "Filter Objects",
searchByTitle: "Search by title", searchTitle: "Search",
searchByTitlePlaceholder: "My Object", searchPlaceholder: "Note 2000-12-31",
searchTitleText: (term, resultCount) => term == "" ? `Objects in total: ${resultCount}` : `Objects containing "${term}": ${resultCount}`, searchTitleText: (term, resultCount) => term == "" ? `Objects in total: ${resultCount}` : `Matches for "${term}": ${resultCount}`,
viewAll: "All", viewAll: "All",
viewNotes: "Notes", viewNotes: "Notes",
viewKanban: "Kanban", viewKanban: "Kanban",
@@ -613,8 +613,8 @@
createObject: "a\xF1adir nuevo objeto", createObject: "a\xF1adir nuevo objeto",
untitledObject: "Sin T\xEDtulo", untitledObject: "Sin T\xEDtulo",
filterObjects: "Filtrar objetos", filterObjects: "Filtrar objetos",
searchByTitle: "Buscar por t\xEDtulo", searchTitle: "Buscar",
searchByTitlePlaceholder: "Mi Objeto", searchPlaceholder: "Nota 2000-12-31",
searchTitleText: (term, resultCount) => term == "" ? `Objetos en total: ${resultCount}` : `Resultados por "${term}": ${resultCount}`, searchTitleText: (term, resultCount) => term == "" ? `Objetos en total: ${resultCount}` : `Resultados por "${term}": ${resultCount}`,
viewAll: "Todos", viewAll: "Todos",
viewNotes: "Notas", viewNotes: "Notas",
@@ -716,8 +716,8 @@
createObject: "Neues Objekt erstellen", createObject: "Neues Objekt erstellen",
untitledObject: "Unbenannt", untitledObject: "Unbenannt",
filterObjects: "Objekte filtern", filterObjects: "Objekte filtern",
searchByTitle: "Nach Titel suchen", searchTitle: "Suchen",
searchByTitlePlaceholder: "Mein Objekt", searchPlaceholder: "Notiz 2000-12-31",
searchTitleText: (term, resultCount) => term == "" ? `Objekte insgesamt: ${resultCount}` : `Ergebnisse f\xFCr "${term}": ${resultCount}`, searchTitleText: (term, resultCount) => term == "" ? `Objekte insgesamt: ${resultCount}` : `Ergebnisse f\xFCr "${term}": ${resultCount}`,
viewAll: "Alle", viewAll: "Alle",
viewNotes: "Notizen", viewNotes: "Notizen",
@@ -1573,7 +1573,7 @@
"span", "span",
{ {
class: "grid height-100 flex secondary", class: "grid height-100 flex secondary",
style: "grid-template-columns: 1fr 1fr" style: "grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 1.7rem)"
}, },
...fieldElements ...fieldElements
)) ))
@@ -2086,7 +2086,7 @@
() => translation.searchTitleText(appliedFilter.value, resultCount.value) () => translation.searchTitleText(appliedFilter.value, resultCount.value)
); );
const showingMessageObjects = new MapState(); const showingMessageObjects = new MapState();
const cannotReset = createProxyState( const isFilterEmpty = createProxyState(
[appliedFilter], [appliedFilter],
() => appliedFilter.value == "" () => appliedFilter.value == ""
); );
@@ -2112,9 +2112,25 @@
}); });
}); });
function checkMatchesFilter(messageObject) { function checkMatchesFilter(messageObject) {
let objectTitle = messageObject.title || translation.untitledObject; if (isFilterEmpty.value == true) return true;
const regex = new RegExp(appliedFilter.value.toLowerCase()); const wordsOfObject = [];
return regex.test(objectTitle.toLowerCase()); const objectTitle = messageObject.title || translation.untitledObject;
wordsOfObject.push(...objectTitle.toLowerCase().split(" "));
const latest = chat.getMostRecentContent(messageObject);
if (latest) {
Object.values(latest).forEach((value) => {
wordsOfObject.push(value.toLowerCase());
});
}
const wordsOfSearchTerm = appliedFilter.value.toLowerCase().split(" ");
for (const word of wordsOfSearchTerm) {
if (word[0] == "-") {
const wordContent = word.substring(1);
console.log(wordContent);
if (wordsOfObject.includes(wordContent)) return false;
} else if (!wordsOfObject.includes(word)) return false;
}
return true;
} }
applyFilter(); applyFilter();
const objectModal = createProxyState( const objectModal = createProxyState(
@@ -2172,19 +2188,19 @@
class: "object-content width-100 height-100 flex scroll-no", class: "object-content width-100 height-100 flex scroll-no",
"children:set": mainView "children:set": mainView
} }
), /* @__PURE__ */ createElement("div", { class: "modal", "toggle:open": isShowingFilterModel }, /* @__PURE__ */ createElement("div", { style: "max-width: 2084px" }, /* @__PURE__ */ createElement("main", { class: "gap" }, /* @__PURE__ */ createElement("h2", null, translation.filterObjects), /* @__PURE__ */ createElement("div", { class: "flex-column" }, /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "search"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.searchByTitle), /* @__PURE__ */ createElement( ), /* @__PURE__ */ createElement("div", { class: "modal", "toggle:open": isShowingFilterModel }, /* @__PURE__ */ createElement("div", { style: "max-width: 2084px" }, /* @__PURE__ */ createElement("main", { class: "gap" }, /* @__PURE__ */ createElement("h2", null, translation.filterObjects), /* @__PURE__ */ createElement("div", { class: "flex-column" }, /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "search"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.searchTitle), /* @__PURE__ */ createElement(
"input", "input",
{ {
"bind:value": filterInput, "bind:value": filterInput,
"on:enter": applyFilter, "on:enter": applyFilter,
placeholder: translation.searchByTitlePlaceholder placeholder: translation.searchPlaceholder
} }
)))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input" }, /* @__PURE__ */ createElement( )))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input" }, /* @__PURE__ */ createElement(
"button", "button",
{ {
class: "width-50 flex", class: "width-50 flex",
"on:click": resetFilter, "on:click": resetFilter,
"toggle:disabled": cannotReset "toggle:disabled": isFilterEmpty
}, },
translation.reset translation.reset
), /* @__PURE__ */ createElement("button", { class: "width-50 flex primary", "on:click": applyFilter }, translation.search, /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_forward"))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("b", { class: "secondary", "subscribe:innerText": resultText }), ObjectGridView( ), /* @__PURE__ */ createElement("button", { class: "width-50 flex primary", "on:click": applyFilter }, translation.search, /* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_forward"))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("b", { class: "secondary", "subscribe:innerText": resultText }), ObjectGridView(
+434 -434
View File
@@ -1,437 +1,437 @@
{ {
"name": "udn-broadcast", "name": "udn-comms",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"dependencies": { "dependencies": {
"bloatless-react": "^1.2.0", "bloatless-react": "^1.3.8",
"esbuild": "latest", "esbuild": "^0.23.0",
"udn-frontend": "^1.0.1" "udn-frontend": "^1.0.7-beta1"
} }
}, },
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz",
"integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"aix" "aix"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz",
"integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"android" "android"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/android-arm64": { "node_modules/@esbuild/android-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz",
"integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"android" "android"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/android-x64": { "node_modules/@esbuild/android-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz",
"integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"android" "android"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/darwin-arm64": { "node_modules/@esbuild/darwin-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz",
"integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/darwin-x64": { "node_modules/@esbuild/darwin-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz",
"integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/freebsd-arm64": { "node_modules/@esbuild/freebsd-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz",
"integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"freebsd" "freebsd"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/freebsd-x64": { "node_modules/@esbuild/freebsd-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz",
"integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"freebsd" "freebsd"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-arm": { "node_modules/@esbuild/linux-arm": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz",
"integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-arm64": { "node_modules/@esbuild/linux-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz",
"integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-ia32": { "node_modules/@esbuild/linux-ia32": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz",
"integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-loong64": { "node_modules/@esbuild/linux-loong64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz",
"integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-mips64el": { "node_modules/@esbuild/linux-mips64el": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz",
"integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-ppc64": { "node_modules/@esbuild/linux-ppc64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz",
"integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-riscv64": { "node_modules/@esbuild/linux-riscv64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz",
"integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-s390x": { "node_modules/@esbuild/linux-s390x": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz",
"integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz",
"integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/netbsd-x64": { "node_modules/@esbuild/netbsd-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz",
"integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"netbsd" "netbsd"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/openbsd-arm64": { "node_modules/@esbuild/openbsd-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz",
"integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"openbsd" "openbsd"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/openbsd-x64": { "node_modules/@esbuild/openbsd-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz",
"integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"openbsd" "openbsd"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/sunos-x64": { "node_modules/@esbuild/sunos-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz",
"integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"sunos" "sunos"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/win32-arm64": { "node_modules/@esbuild/win32-arm64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz",
"integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/win32-ia32": { "node_modules/@esbuild/win32-ia32": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz",
"integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz",
"integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/bloatless-react": { "node_modules/bloatless-react": {
"version": "1.2.1", "version": "1.3.8",
"resolved": "https://registry.npmjs.org/bloatless-react/-/bloatless-react-1.2.1.tgz", "resolved": "https://registry.npmjs.org/bloatless-react/-/bloatless-react-1.3.8.tgz",
"integrity": "sha512-VxJ2XYTS7Aw3mgjfKrLtR471bg2KHzsj2nUtEeY5Ml4R82XQBL+B4o3EYM9u4TStokHMywm+Pa+qNTNbRDZw/g==", "integrity": "sha512-cq4pqO7KauxSBP7QbpJxsDgg/O6TK1lkrpqGYw10uxDPG5gn26jSjCrywFhEEfwyaNwKu6g+VljjTJIQLzNdWA==",
"dependencies": { "dependencies": {
"uuid": "^10.0.0" "uuid": "^10.0.0"
} }
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz",
"integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==",
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
"esbuild": "bin/esbuild" "esbuild": "bin/esbuild"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/aix-ppc64": "0.23.0", "@esbuild/aix-ppc64": "0.23.0",
"@esbuild/android-arm": "0.23.0", "@esbuild/android-arm": "0.23.0",
"@esbuild/android-arm64": "0.23.0", "@esbuild/android-arm64": "0.23.0",
"@esbuild/android-x64": "0.23.0", "@esbuild/android-x64": "0.23.0",
"@esbuild/darwin-arm64": "0.23.0", "@esbuild/darwin-arm64": "0.23.0",
"@esbuild/darwin-x64": "0.23.0", "@esbuild/darwin-x64": "0.23.0",
"@esbuild/freebsd-arm64": "0.23.0", "@esbuild/freebsd-arm64": "0.23.0",
"@esbuild/freebsd-x64": "0.23.0", "@esbuild/freebsd-x64": "0.23.0",
"@esbuild/linux-arm": "0.23.0", "@esbuild/linux-arm": "0.23.0",
"@esbuild/linux-arm64": "0.23.0", "@esbuild/linux-arm64": "0.23.0",
"@esbuild/linux-ia32": "0.23.0", "@esbuild/linux-ia32": "0.23.0",
"@esbuild/linux-loong64": "0.23.0", "@esbuild/linux-loong64": "0.23.0",
"@esbuild/linux-mips64el": "0.23.0", "@esbuild/linux-mips64el": "0.23.0",
"@esbuild/linux-ppc64": "0.23.0", "@esbuild/linux-ppc64": "0.23.0",
"@esbuild/linux-riscv64": "0.23.0", "@esbuild/linux-riscv64": "0.23.0",
"@esbuild/linux-s390x": "0.23.0", "@esbuild/linux-s390x": "0.23.0",
"@esbuild/linux-x64": "0.23.0", "@esbuild/linux-x64": "0.23.0",
"@esbuild/netbsd-x64": "0.23.0", "@esbuild/netbsd-x64": "0.23.0",
"@esbuild/openbsd-arm64": "0.23.0", "@esbuild/openbsd-arm64": "0.23.0",
"@esbuild/openbsd-x64": "0.23.0", "@esbuild/openbsd-x64": "0.23.0",
"@esbuild/sunos-x64": "0.23.0", "@esbuild/sunos-x64": "0.23.0",
"@esbuild/win32-arm64": "0.23.0", "@esbuild/win32-arm64": "0.23.0",
"@esbuild/win32-ia32": "0.23.0", "@esbuild/win32-ia32": "0.23.0",
"@esbuild/win32-x64": "0.23.0" "@esbuild/win32-x64": "0.23.0"
} }
}, },
"node_modules/udn-frontend": { "node_modules/udn-frontend": {
"version": "1.0.2", "version": "1.0.7-beta1",
"resolved": "https://registry.npmjs.org/udn-frontend/-/udn-frontend-1.0.2.tgz", "resolved": "https://registry.npmjs.org/udn-frontend/-/udn-frontend-1.0.7-beta1.tgz",
"integrity": "sha512-CNLJOHg0CNujDIjMABUM9rUsR6ZJ2rFfxU4GwO6e/6rgWzxmy5AilZZeeQAEr8aldHgoQAiS7DC1xXsR+Dimbg==" "integrity": "sha512-Q9PS5SEtn1myYnQOQuv6U+ro9Thvc6CyiitBIKWE2TMDG652kU5l7dznW5ebi6htVtHiZrJcBiBSIx1jBpR2qg=="
}, },
"node_modules/uuid": { "node_modules/uuid": {
"version": "10.0.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
"integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
"funding": [ "funding": [
"https://github.com/sponsors/broofa", "https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan" "https://github.com/sponsors/ctavan"
], ],
"bin": { "bin": {
"uuid": "dist/bin/uuid" "uuid": "dist/bin/uuid"
} }
}
} }
}
} }
+3 -3
View File
@@ -1,8 +1,8 @@
{ {
"dependencies": { "dependencies": {
"bloatless-react": "latest", "bloatless-react": "^1.3.8",
"esbuild": "latest", "esbuild": "^0.23.0",
"udn-frontend": "latest" "udn-frontend": "^1.0.7-beta1"
}, },
"scripts": { "scripts": {
"build": "esbuild src/index.tsx --bundle --outdir=dist" "build": "esbuild src/index.tsx --bundle --outdir=dist"
+31 -10
View File
@@ -49,7 +49,7 @@ export function ObjectPane(chat: Chat) {
translation.searchTitleText(appliedFilter.value, resultCount.value) translation.searchTitleText(appliedFilter.value, resultCount.value)
); );
const showingMessageObjects = new React.MapState<MessageObject>(); const showingMessageObjects = new React.MapState<MessageObject>();
const cannotReset = React.createProxyState( const isFilterEmpty = React.createProxyState(
[appliedFilter], [appliedFilter],
() => appliedFilter.value == "" () => appliedFilter.value == ""
); );
@@ -70,18 +70,39 @@ export function ObjectPane(chat: Chat) {
matchingObjects.forEach((entry) => showingMessageObjects.set(...entry)); matchingObjects.forEach((entry) => showingMessageObjects.set(...entry));
} }
chat.objects.handleAddition(messageObject => { chat.objects.handleAddition((messageObject) => {
if (checkMatchesFilter(messageObject) == false) return; if (checkMatchesFilter(messageObject) == false) return;
showingMessageObjects.set(messageObject.id, messageObject); showingMessageObjects.set(messageObject.id, messageObject);
chat.objects.handleRemoval(messageObject, () => { chat.objects.handleRemoval(messageObject, () => {
showingMessageObjects.remove(messageObject.id); showingMessageObjects.remove(messageObject.id);
}) });
}) });
function checkMatchesFilter(messageObject: MessageObject) { function checkMatchesFilter(messageObject: MessageObject) {
let objectTitle = messageObject.title || translation.untitledObject; if (isFilterEmpty.value == true) return true;
const regex = new RegExp(appliedFilter.value.toLowerCase());
return regex.test(objectTitle.toLowerCase()); const wordsOfObject: string[] = [];
const objectTitle = messageObject.title || translation.untitledObject;
wordsOfObject.push(...objectTitle.toLowerCase().split(" "));
const latest = chat.getMostRecentContent(messageObject);
if (latest) {
Object.values(latest).forEach((value) => {
wordsOfObject.push(value.toLowerCase());
});
}
const wordsOfSearchTerm = appliedFilter.value.toLowerCase().split(" ");
for (const word of wordsOfSearchTerm) {
if (word[0] == "-") {
// exclusion
const wordContent = word.substring(1);
console.log(wordContent);
if (wordsOfObject.includes(wordContent)) return false;
} else if (!wordsOfObject.includes(word)) return false;
}
return true;
} }
applyFilter(); applyFilter();
@@ -162,11 +183,11 @@ export function ObjectPane(chat: Chat) {
<label class="tile"> <label class="tile">
<span class="icon">search</span> <span class="icon">search</span>
<div> <div>
<span>{translation.searchByTitle}</span> <span>{translation.searchTitle}</span>
<input <input
bind:value={filterInput} bind:value={filterInput}
on:enter={applyFilter} on:enter={applyFilter}
placeholder={translation.searchByTitlePlaceholder} placeholder={translation.searchPlaceholder}
></input> ></input>
</div> </div>
</label> </label>
@@ -175,7 +196,7 @@ export function ObjectPane(chat: Chat) {
<button <button
class="width-50 flex" class="width-50 flex"
on:click={resetFilter} on:click={resetFilter}
toggle:disabled={cannotReset} toggle:disabled={isFilterEmpty}
> >
{translation.reset} {translation.reset}
</button> </button>
+7 -7
View File
@@ -102,12 +102,12 @@ const englishTranslations = {
untitledObject: "Untitled Object", untitledObject: "Untitled Object",
filterObjects: "Filter Objects", filterObjects: "Filter Objects",
searchByTitle: "Search by title", searchTitle: "Search",
searchByTitlePlaceholder: "My Object", searchPlaceholder: "Note 2000-12-31",
searchTitleText: (term: string, resultCount: number) => searchTitleText: (term: string, resultCount: number) =>
term == "" term == ""
? `Objects in total: ${resultCount}` ? `Objects in total: ${resultCount}`
: `Objects containing "${term}": ${resultCount}`, : `Matches for "${term}": ${resultCount}`,
viewAll: "All", viewAll: "All",
viewNotes: "Notes", viewNotes: "Notes",
@@ -241,8 +241,8 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
untitledObject: "Sin Título", untitledObject: "Sin Título",
filterObjects: "Filtrar objetos", filterObjects: "Filtrar objetos",
searchByTitle: "Buscar por título", searchTitle: "Buscar",
searchByTitlePlaceholder: "Mi Objeto", searchPlaceholder: "Nota 2000-12-31",
searchTitleText: (term: string, resultCount: number) => searchTitleText: (term: string, resultCount: number) =>
term == "" term == ""
? `Objetos en total: ${resultCount}` ? `Objetos en total: ${resultCount}`
@@ -377,8 +377,8 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
untitledObject: "Unbenannt", untitledObject: "Unbenannt",
filterObjects: "Objekte filtern", filterObjects: "Objekte filtern",
searchByTitle: "Nach Titel suchen", searchTitle: "Suchen",
searchByTitlePlaceholder: "Mein Objekt", searchPlaceholder: "Notiz 2000-12-31",
searchTitleText: (term: string, resultCount: number) => searchTitleText: (term: string, resultCount: number) =>
term == "" term == ""
? `Objekte insgesamt: ${resultCount}` ? `Objekte insgesamt: ${resultCount}`