From e6b083fb7441ebdf65230517509af3c55c0c808c Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Fri, 06 Jun 2025 17:03:02 +0000
Subject: [PATCH] GS-2147

---
 lib/db.js                  |    2 +-
 settings.default.json      |    4 ++++
 vue/src/pages/Users.vue    |    6 ++++--
 lib/search.js              |   25 +++++++++++++++++++------
 vue/src/assets/styles.styl |    7 +++++++
 5 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/lib/db.js b/lib/db.js
index 3a59978..5ae1746 100644
--- a/lib/db.js
+++ b/lib/db.js
@@ -56,7 +56,7 @@
    }
    else {
       const ids = searchLib.search(search)
-      if (!ids.length) return getUserSearchQuery(offset, limit) // nothing found
+      // if (!ids.length) return getUserSearchQuery(offset, limit) // nothing found
       return `SELECT ${sel}
               FROM ${database}.usr_data AS ud
               WHERE login REGEXP '^[0-9]+$'
diff --git a/lib/search.js b/lib/search.js
index c332548..8053536 100644
--- a/lib/search.js
+++ b/lib/search.js
@@ -1,11 +1,14 @@
 const _ = require("lodash")
 const {Index, Document, Worker} = require("flexsearch")
+const settings = require("../settings")
+const fs = require("node:fs")
 
 /////////////////////////////////////////////////////////////////////////
 
 // Message index
 const options = {
-   tokenize: "full",
+   // tokenize: "full",
+   tokenize: "forward",
    split: true,
 }
 
@@ -67,7 +70,7 @@
 // .then(console.log)
 // .catch(console.error)
 
-async function run() {
+async function run () {
    await doIndex()
    console.log(search("latu"))
 }
@@ -77,8 +80,17 @@
 async function doIndex () {
    const start = Date.now()
    console.log("++ START indexing Users...")
-   let users = require("../users.json")
-   // users = users.slice(10)
+
+   const {readFromFile, file} = settings.search
+
+   let users
+   if (readFromFile) {
+      users = fs.readFileSync(file, "utf8")
+      users = JSON.parse(users)
+   }
+   else {
+      // TODO zweite möglichkeit "readFromApi" implementieren
+   }
 
    for (const user of users) {
       addUser(user)
@@ -109,8 +121,9 @@
 /////// idxMessage FNS ////////////////////////////////////////////////////////////////
 
 function getUserString (user) {
-   const {usr_id, firstname, lastname} = user
-   return `${usr_id} ${firstname} ${lastname}`.trim()
+   const {usr_id, firstname, lastname, institution, department} = user
+   return `${usr_id} ${firstname} ${lastname} ${institution} ${department}`.trim()
+   // return `${usr_id} ${firstname} ${lastname}`.trim()
 }
 
 function addUser (user) {
diff --git a/settings.default.json b/settings.default.json
index 5e118e7..c262127 100644
--- a/settings.default.json
+++ b/settings.default.json
@@ -7,5 +7,9 @@
       "database": "ilias",
       "user": "root",
       "password": "paaa322ss"
+   },
+   "search": {
+      "readFromFile": true,
+      "file": "users-local.json"
    }
 }
diff --git a/vue/src/assets/styles.styl b/vue/src/assets/styles.styl
index d6d00b2..1cac14c 100644
--- a/vue/src/assets/styles.styl
+++ b/vue/src/assets/styles.styl
@@ -33,3 +33,10 @@
    white-space nowrap
 
 
+input[type=text], input[type=password]
+   padding .11em .22em
+   border 3px solid #aaa
+   &:focus
+      border 3px solid orange
+      outline none
+
diff --git a/vue/src/pages/Users.vue b/vue/src/pages/Users.vue
index d4aac5d..bac97a6 100644
--- a/vue/src/pages/Users.vue
+++ b/vue/src/pages/Users.vue
@@ -19,16 +19,18 @@
 const limit = 22
 const error = ref(null)
 
-onMounted(() => init(offset.value))
+onMounted(() => init(offset.value, search.value))
 
 /////// SEARCH ////////////////////////////////////////////////////////////////
 
 const search = useRouteQuery("search", "",)// {transform: s => s.trim()})
 async function _doSearch (search) {
    console.log("doSEarch", search)
+   // return init(0, search)
+   // TODO offset muss zurückgesetzt werden wenn die Suche neu ist
    return init(offset.value, search)
 }
-const doSearch = useDebounceFn(_doSearch, 500)
+const doSearch = useDebounceFn(_doSearch, 333)
 
 /////////////////////////////////////////////////////////////////////////
 

--
Gitblit v1.8.0