Formular zur Kundenverwaltung hinzugefügt: Unterstützung für das Hinzufügen und Aktualisieren von Kunden implementiert
This commit is contained in:
1 parent
77bf53423c
commit
87f8d9e395
1 file changed
+62
-4
@@ -28,10 +28,32 @@ export const kunde: m.ClosureComponent = (vnode) => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
view: (vnode) => {
|
view: (vnode) => {
|
||||||
|
const submit = (form: HTMLFormElement): boolean => {
|
||||||
|
const formData = new FormData(form)
|
||||||
|
const gespeicherterKunde: iKunde = {
|
||||||
|
id: currentKunde.id,
|
||||||
|
name: (formData.get("kundenname") as string) || "",
|
||||||
|
strasse: (formData.get("strasse") as string) || "",
|
||||||
|
plz: (formData.get("plz") as string) || "",
|
||||||
|
ort: (formData.get("ort") as string) || "",
|
||||||
|
land: (formData.get("land") as string) || ""
|
||||||
|
}
|
||||||
|
if (currentKunde.id === -1) {
|
||||||
|
gespeicherterKunde.id = getNewKundeId()
|
||||||
|
addKunde(gespeicherterKunde)
|
||||||
|
} else {
|
||||||
|
updateKunde(gespeicherterKunde)
|
||||||
|
}
|
||||||
|
m.route.set("/kundenliste")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const cancel = (e: Event) => {
|
||||||
|
m.route.set("/kundenliste")
|
||||||
|
}
|
||||||
return m("div.w3-container.w3-twothird",
|
return m("div.w3-container.w3-twothird",
|
||||||
m("h1", "Kundenstammblatt"),
|
m("h1", currentKunde.id === -1 ? "Neuen Kunden anlegen" : "Kundenstammblatt"),
|
||||||
m(Form, {showButtons: true, onsubmit: (null), oncancel: (null)} as iForm, [
|
m(Form, {showButtons: true, onsubmit: submit, oncancel: cancel} as iForm, [
|
||||||
m("label", "Kundenname", m(Input, {name: "kundenname", value: currentKunde.name, type: "text"} as iInput)),
|
m("label", "Kundenname", m(Input, {name: "kundenname", value: currentKunde.name, type: "text", required: true} as iInput)),
|
||||||
m("label", "Straße", m(Input, {name: "strasse", value: currentKunde.strasse, type: "text"} as iInput)),
|
m("label", "Straße", m(Input, {name: "strasse", value: currentKunde.strasse, type: "text"} as iInput)),
|
||||||
m("label", "PLZ", m(Input, {name: "plz", value: currentKunde.plz, type: "text"} as iInput)),
|
m("label", "PLZ", m(Input, {name: "plz", value: currentKunde.plz, type: "text"} as iInput)),
|
||||||
m("label", "Ort", m(Input, {name: "ort", value: currentKunde.ort, type: "text"} as iInput)),
|
m("label", "Ort", m(Input, {name: "ort", value: currentKunde.ort, type: "text"} as iInput)),
|
||||||
@@ -51,12 +73,41 @@ interface iKunde {
|
|||||||
land: string
|
land: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getNewKundeId(): number {
|
||||||
|
if (kundenDaten.length === 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return Math.max(...kundenDaten.map((kunde: iKunde) => kunde.id)) + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function addKunde(kunde: iKunde): void {
|
||||||
|
kundenDaten.push(kunde)
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateKunde(kunde: iKunde): void {
|
||||||
|
const index = kundenDaten.findIndex((k: iKunde) => k.id === kunde.id)
|
||||||
|
if (index !== -1) {
|
||||||
|
kundenDaten[index] = kunde
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const kundenDaten: iKunde[] = [
|
const kundenDaten: iKunde[] = [
|
||||||
{id: 1, name: "Musterfirma GmbH", strasse: "Musterstraße 1", plz: "12345", ort: "Musterstadt", land: "Deutschland"},
|
{id: 1, name: "Musterfirma GmbH", strasse: "Musterstraße 1", plz: "12345", ort: "Musterstadt", land: "Deutschland"},
|
||||||
{id: 2, name: "Beispiel AG", strasse: "Beispielweg 2", plz: "54321", ort: "Beispielstadt", land: "Deutschland"},
|
{id: 2, name: "Beispiel AG", strasse: "Beispielweg 2", plz: "54321", ort: "Beispielstadt", land: "Deutschland"},
|
||||||
{id: 3, name: "Test Unternehmen", strasse: "Testallee 3", plz: "67890", ort: "Testdorf", land: "Österreich"}
|
{id: 3, name: "Test Unternehmen", strasse: "Testallee 3", plz: "67890", ort: "Testdorf", land: "Österreich"}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erzeugt aus der Kundendatenliste die Treenode-Struktur für die Treetable der
|
||||||
|
* Kundenliste. Jeder Kunde wird zu einem expandierten Treenode ohne Kinder
|
||||||
|
* (expand=true, children=[]) - d.h. ein Blattknoten, der sofort in der
|
||||||
|
* Tabelle sichtbar ist und sich nicht weiter aufklappen lässt.
|
||||||
|
*
|
||||||
|
* Crée la structure de Treenode pour la Treetable de la liste des clients à
|
||||||
|
* partir de la liste des données clients. Chaque client devient un Treenode
|
||||||
|
* déployé sans enfants (expand=true, children=[]) - c'est-à-dire un nœud
|
||||||
|
* feuille, immédiatement visible dans le tableau et non dépliable.
|
||||||
|
*/
|
||||||
function createKundenTreenodes(): iTreenode[] {
|
function createKundenTreenodes(): iTreenode[] {
|
||||||
return kundenDaten.map((kunde: iKunde) => {
|
return kundenDaten.map((kunde: iKunde) => {
|
||||||
return new Treenode(kunde, true, [])
|
return new Treenode(kunde, true, [])
|
||||||
@@ -81,6 +132,10 @@ export const kundenliste: m.ClosureComponent = (vnode) => {
|
|||||||
m.route.set("/projektliste", {kundenId: kunde.id})
|
m.route.set("/projektliste", {kundenId: kunde.id})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const addKundeRoute = () => {
|
||||||
|
m.route.set("/kunde", {id: -1, name: "", strasse: "", plz: "", ort: "", land: ""})
|
||||||
|
}
|
||||||
|
|
||||||
const columnmapper: (node: iTreenode) => any[] = (node: iTreenode) => {
|
const columnmapper: (node: iTreenode) => any[] = (node: iTreenode) => {
|
||||||
let kunde: iKunde = node.nodevalue
|
let kunde: iKunde = node.nodevalue
|
||||||
const isSelected = selectedNode === node
|
const isSelected = selectedNode === node
|
||||||
@@ -126,7 +181,10 @@ export const kundenliste: m.ClosureComponent = (vnode) => {
|
|||||||
columnmapper: columnmapper,
|
columnmapper: columnmapper,
|
||||||
filter: filterFunction,
|
filter: filterFunction,
|
||||||
onRowMarked: handleRowMarked
|
onRowMarked: handleRowMarked
|
||||||
} as iTreetable
|
} as iTreetable,
|
||||||
|
m(TopbarButton, {onclick: addKundeRoute, tooltip: "Neuen Kunden anlegen"} as iTopbarButton,
|
||||||
|
m("i.material-icons", "person_add")
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user