Kontaktadresse: Neues Feld Position, Filter-Funktionen null-sicher, Projektnamen-Spalte entfernt
- Server: Neue Spalte position in Kontaktadresse-Modell (String(200), nullable) - Server: Migration V01_04 (ALTER TABLE kontaktadressen ADD COLUMN position) - Server: position in Geschäftslogik create/update aufgenommen - Server: CLI-Musterdaten um Position ergänzt (Geschäftsführer, IT-Leiter etc.) - Client: position in iKontaktadresse-Interface, View nach Firma, Columnmapper, Filter - Client: Projektnamen-Spalte aus Kontaktadressenliste entfernt (steht in Überschrift) - Client: Filter-Funktionen in allen Listen null-sicher (kunde, kontakt, projekt, kontaktadresse, call_log) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
1 parent
b510c50497
commit
e9a2f48ede
10 files changed
+59
-36
No files matched your search
@@ -64,10 +64,10 @@ export const kontaktadresseliste: m.ClosureComponent = (vnode) => {
|
||||
return [
|
||||
m("div", m("strong", kontaktadresse.name)),
|
||||
m("span", kontaktadresse.firma),
|
||||
m("span", kontaktadresse.position),
|
||||
m("span", kontaktadresse.telefon),
|
||||
m("span", kontaktadresse.email),
|
||||
m("span", kontaktadresse.ort),
|
||||
m("span", kontaktadresse.projekt_name),
|
||||
m("div", {style: {display: 'flex', gap: '0', 'white-space': 'nowrap'}},
|
||||
m("button.w3-button.w3-small", {style: {padding: '0 2px'}, onclick: (e: Event) => editKontaktadresse(kontaktadresse, e)}, m("i.material-icons", "edit")),
|
||||
m("button.w3-button.w3-small", {title: "Gesprächsnotiz hinzufügen", style: {padding: '0 2px'}, onclick: (e: Event) => addCallLog(kontaktadresse, e)}, m("i.material-icons", "add_call"))
|
||||
@@ -78,12 +78,13 @@ export const kontaktadresseliste: m.ClosureComponent = (vnode) => {
|
||||
const filterFunction = (node: iTreenode, searchvalue: string): boolean => {
|
||||
let kontaktadresse: iKontaktadresse = node.nodevalue
|
||||
let searchLower = searchvalue.toLowerCase()
|
||||
return kontaktadresse.name.toLowerCase().includes(searchLower) ||
|
||||
kontaktadresse.firma.toLowerCase().includes(searchLower) ||
|
||||
kontaktadresse.telefon.toLowerCase().includes(searchLower) ||
|
||||
kontaktadresse.email.toLowerCase().includes(searchLower) ||
|
||||
kontaktadresse.ort.toLowerCase().includes(searchLower) ||
|
||||
kontaktadresse.projekt_name.toLowerCase().includes(searchLower)
|
||||
return (kontaktadresse.name || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.firma || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.position || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.telefon || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.email || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.ort || "").toLowerCase().includes(searchLower) ||
|
||||
(kontaktadresse.projekt_name || "").toLowerCase().includes(searchLower)
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -152,6 +153,7 @@ export const Kontaktadresse: m.ClosureComponent = (vnode) => {
|
||||
anrede: string
|
||||
name: string
|
||||
firma: string
|
||||
position: string
|
||||
telefon: string
|
||||
email: string
|
||||
strasse: string
|
||||
@@ -166,6 +168,7 @@ export const Kontaktadresse: m.ClosureComponent = (vnode) => {
|
||||
anrede: "",
|
||||
name: "",
|
||||
firma: "",
|
||||
position: "",
|
||||
telefon: "",
|
||||
email: "",
|
||||
strasse: "",
|
||||
@@ -200,6 +203,7 @@ export const Kontaktadresse: m.ClosureComponent = (vnode) => {
|
||||
anrede: (formData.get("anrede") as string) || "",
|
||||
name: (formData.get("name") as string) || "",
|
||||
firma: (formData.get("firma") as string) || "",
|
||||
position: (formData.get("position") as string) || "",
|
||||
telefon: (formData.get("telefon") as string) || "",
|
||||
email: (formData.get("email") as string) || "",
|
||||
strasse: (formData.get("strasse") as string) || "",
|
||||
@@ -228,6 +232,7 @@ export const Kontaktadresse: m.ClosureComponent = (vnode) => {
|
||||
m("label", "Anrede", m(Input, {name: "anrede", value: currentKontaktadresse.anrede, type: "text"} as iInput)),
|
||||
m("label", "Name", m(Input, {name: "name", value: currentKontaktadresse.name, type: "text", required: true} as iInput)),
|
||||
m("label", "Firma", m(Input, {name: "firma", value: currentKontaktadresse.firma, type: "text"} as iInput)),
|
||||
m("label", "Position", m(Input, {name: "position", value: currentKontaktadresse.position, type: "text"} as iInput)),
|
||||
m("label", "Telefon", m(Input, {name: "telefon", value: currentKontaktadresse.telefon, type: "tel"} as iInput)),
|
||||
m("label", "E-Mail", m(Input, {name: "email", value: currentKontaktadresse.email, type: "email"} as iInput)),
|
||||
m("label", "Straße", m(Input, {name: "strasse", value: currentKontaktadresse.strasse, type: "text"} as iInput)),
|
||||
|
||||
Reference in new issue
Block a user