add datalist for statuses

This commit is contained in:
marlon-erler
2024-07-12 15:09:57 +02:00
parent ffa4e8c538
commit 4a6b86220e
4 changed files with 27 additions and 7 deletions
+14 -4
View File
@@ -940,8 +940,9 @@
this.objects.set(messageObject.id, messageObject); this.objects.set(messageObject.id, messageObject);
} }
const latest = this.getMostRecentContent(messageObject); const latest = this.getMostRecentContent(messageObject);
if (!latest || !latest.categoryName) return; if (!latest) return;
usedObjectCategories.add(latest.categoryName); if (latest.categoryName) usedObjectCategories.add(latest.categoryName);
if (latest.status) usedObjectStatuses.add(latest.status);
}; };
addObjectAndSend = (messageObject) => { addObjectAndSend = (messageObject) => {
this.addObject(messageObject); this.addObject(messageObject);
@@ -1240,6 +1241,7 @@
pageZoom.value += zoomStep; pageZoom.value += zoomStep;
} }
var usedObjectCategories = restoreListState("object-categories"); var usedObjectCategories = restoreListState("object-categories");
var usedObjectStatuses = restoreListState("object-statuses");
var chats = new ListState(); var chats = new ListState();
var chatIds = restoreListState("chat-ids"); var chatIds = restoreListState("chat-ids");
var selectedChat = new State(void 0); var selectedChat = new State(void 0);
@@ -1724,9 +1726,17 @@
"input", "input",
{ {
"bind:value": editingStatus, "bind:value": editingStatus,
placeholder: translation.statusPlaceholder placeholder: translation.statusPlaceholder,
list: "object-statuses"
} }
))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.date), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.date), /* @__PURE__ */ createElement("input", { type: "date", "bind:value": editingDate }))), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.time), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.time), /* @__PURE__ */ createElement("input", { type: "time", "bind:value": editingTime }))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("button", { class: "danger width-input", "on:click": deleteAndClose }, translation.deleteObject, /* @__PURE__ */ createElement("span", { class: "icon" }, "delete")))), /* @__PURE__ */ createElement("div", { class: "flex-row" }, /* @__PURE__ */ createElement("button", { class: "flex-1 width-100 danger", "on:click": closeModal }, translation.discard), /* @__PURE__ */ createElement("button", { class: "flex-1 width-100 primary", "on:click": saveAndClose }, translation.save, /* @__PURE__ */ createElement("span", { class: "icon" }, "save"))))); ))), /* @__PURE__ */ createElement(
"datalist",
{
hidden: true,
id: "object-statuses",
"children:append": [usedObjectStatuses, stringToOptionTag]
}
), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.date), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.date), /* @__PURE__ */ createElement("input", { type: "date", "bind:value": editingDate }))), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.time), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.time), /* @__PURE__ */ createElement("input", { type: "time", "bind:value": editingTime }))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("button", { class: "danger width-input", "on:click": deleteAndClose }, translation.deleteObject, /* @__PURE__ */ createElement("span", { class: "icon" }, "delete")))), /* @__PURE__ */ createElement("div", { class: "flex-row" }, /* @__PURE__ */ createElement("button", { class: "flex-1 width-100 danger", "on:click": closeModal }, translation.discard), /* @__PURE__ */ createElement("button", { class: "flex-1 width-100 primary", "on:click": saveAndClose }, translation.save, /* @__PURE__ */ createElement("span", { class: "icon" }, "save")))));
} }
// src/Views/Objects/statusView.tsx // src/Views/Objects/statusView.tsx
+4 -2
View File
@@ -10,6 +10,7 @@ import {
senderName, senderName,
updateMailbox, updateMailbox,
usedObjectCategories, usedObjectCategories,
usedObjectStatuses,
} from "../Model/model"; } from "../Model/model";
import { decryptString, encryptString } from "../cryptUtility"; import { decryptString, encryptString } from "../cryptUtility";
@@ -360,8 +361,9 @@ export class Chat {
} }
const latest = this.getMostRecentContent(messageObject); const latest = this.getMostRecentContent(messageObject);
if (!latest || !latest.categoryName) return; if (!latest) return;
usedObjectCategories.add(latest.categoryName); if (latest.categoryName) usedObjectCategories.add(latest.categoryName);
if (latest.status) usedObjectStatuses.add(latest.status);
}; };
addObjectAndSend = (messageObject: MessageObject): void => { addObjectAndSend = (messageObject: MessageObject): void => {
+2
View File
@@ -159,6 +159,8 @@ export function zoomIn() {
export const usedObjectCategories = export const usedObjectCategories =
React.restoreListState<string>("object-categories"); React.restoreListState<string>("object-categories");
export const usedObjectStatuses =
React.restoreListState<string>("object-statuses");
// CHAT // CHAT
export const chats = new React.ListState<Chat>(); export const chats = new React.ListState<Chat>();
+7 -1
View File
@@ -1,11 +1,11 @@
import * as React from "bloatless-react"; import * as React from "bloatless-react";
import { Chat, MessageObject } from "../../Model/chatModel"; import { Chat, MessageObject } from "../../Model/chatModel";
import { usedObjectCategories, usedObjectStatuses } from "../../Model/model";
import { icons } from "../../icons"; import { icons } from "../../icons";
import { stringToOptionTag } from "../../utility"; import { stringToOptionTag } from "../../utility";
import { translation } from "../../translations"; import { translation } from "../../translations";
import { usedObjectCategories } from "../../Model/model";
export function ObjectDetailModal( export function ObjectDetailModal(
chat: Chat, chat: Chat,
@@ -204,9 +204,15 @@ export function ObjectDetailModal(
<input <input
bind:value={editingStatus} bind:value={editingStatus}
placeholder={translation.statusPlaceholder} placeholder={translation.statusPlaceholder}
list="object-statuses"
></input> ></input>
</div> </div>
</label> </label>
<datalist
hidden
id="object-statuses"
children:append={[usedObjectStatuses, stringToOptionTag]}
></datalist>
<hr></hr> <hr></hr>