Suche

Support

Discord

German

Suche

Support

Discord

German

Beispiele

Custom Table mit Mini Widgets

Mehr Übersicht in Tabellen: Mini Widgets direkt in der Custom Table

Visualisierung eines interaktiven Tabellen-Widgets mit Mini Widgets in Ninox. Darstellung zeigt Aufgabenübersicht mit Fortschrittsanzeige, Status und Unteraufgaben. Überschrift: 'Mehr Überblick – Custom Tables mit Mini Widgets effizient gestalten'.

In diesem Beitrag zeigen wir euch ein praxisnahes und komplexes Beispiel für eine Custom Table, die eure Aufgabenverwaltung in Ninox deutlich übersichtlicher und interaktiver macht. Die Tabelle gruppiert Aufgaben nach Aufträgen und kombiniert leistungsstarke Funktionen mit einer modernen Darstellung.

Dank der integrierten Mini Widgets – darunter Checkbox, Input, Progress Bar, Button, Select, Icon und Pagination – lässt sich die Tabelle direkt bedienen, ohne die Ansicht verlassen zu müssen. Ideal für alle, die Effizienz und Benutzerfreundlichkeit in ihren Workflows kombinieren möchten.

Aufgabenverwaltung leicht gemacht

Mit unserer Custom Table verwaltet ihr Aufgaben so einfach und effizient wie nie zuvor. Dank der Gruppierung nach Aufträgen behaltet ihr stets den Überblick – und das ist erst der Anfang.

✅ Aufgaben abhaken leicht gemacht

Per integrierter Checkbox markiert ihr erledigte Aufgaben direkt in der Tabelle. Ein visuelles Feedback zeigt euch sofort, was bereits geschafft ist.

📝 Beschreibungen direkt editieren

In der Spalte „Beschreibung“ findet ihr mehrzeilige Inputfelder. Damit könnt ihr Aufgaben direkt bearbeiten – ohne zusätzliche Klicks oder das Öffnen einzelner Datensätze.

📅 Termine schnell anpassen

Mit dem eingebauten Datumsfeld aktualisiert ihr Fälligkeiten im Handumdrehen. Einfach das neue Datum auswählen – fertig.

📊 Fortschritt immer im Blick

Die integrierte ProgressBar zeigt euch auf einen Blick, wie weit ihr mit den Aufgaben seid – farblich visualisiert und jederzeit aktuell.

➕ Unteraufgaben direkt hinzufügen

Per Button erstellt ihr neue Unteraufgaben in einem Ninox-Popup. So lassen sich Aufgaben flexibel verfeinern und strukturieren.

🔄 Status einfach umstellen

Ein Dropdown-Menü ermöglicht die direkte Änderung des Aufgabenstatus – schnell, intuitiv und ohne Umwege.

🗑️ Aufräumen leicht gemacht

Ein Klick auf das Löschen-Icon entfernt überflüssige Aufgaben direkt aus der Tabelle. Schnell, effizient und ohne Extra-Schritte.

🎨 Farbige Übersicht

Die dynamische groupRowColor-Funktion färbt die Zeilen je nach Fortschritt automatisch ein – für maximale Übersicht und visuelle Klarheit.

⚙️ Automationen weiter nutzen

Die Widgets greifen nicht in eure Datenstruktur ein – ihr könnt weiterhin alle gewohnten Automationen in Ninox nutzen. Zum Beispiel: Setzt automatisch das Datum auf today() bei Abschluss einer Aufgabe – alles über „Trigger nach Änderung“ steuerbar.

Fazit

Mit dieser Custom Table bringt ihr eure Aufgabenverwaltung auf ein neues Level. Interaktive Mini Widgets wie Checkbox, Input, Progress Bar, Button, Select, Icon und Pagination machen eure Tabelle zum leistungsstarken UI-Element.

🚀 Effizienz trifft Übersicht – direkt in Ninox.

Anwendungscode des Beispiels

let current := this;
let list := (flteredList_Aufgaben[cnt(Auftrag.Aufgaben) > 5] order by cnt(Auftrag.Aufgaben)); //Ihr könnt euch Listen in extra Formel-Feldern vorfiltern, damit der Code nicht so lang wird
let maxEntries := 'Einträge pro Seite'; // Hilfsfeld Zahl 
let currentPage := 'Aktuelle Seite'; // Hilfsfeld Zahl 
let paginatedList := unique(record(Aufgaben,0))[!= 0]; 
for listItem in slice(list.Nr, maxEntries * (currentPage - 1), maxEntries * currentPage) do
	paginatedList := unique(paginatedList, record(Aufgaben,listItem))
end;
let data := {
		uniqueListId: "Aufgaben Demo 1",
		tableId: tableId(first(list)),
		height: "600px",
		width: "100px",
		groupedBy: "Aufgabe",
        groupsCollapsed: false, 
		embedded: false,
		table: paginatedList.[{
				recordId: Nr,
				rowColor: "",
				rowHeight: "auto",
				rowPaddingY: "10px",
				groupRowColor: let currentRecord := Nr;
				if cnt(list[Checkliste.Nr = currentRecord.Checkliste.Nr and Erledigt = true]) = cnt(list[Checkliste.Nr = currentRecord.Checkliste.Nr]) then
					"#dcf2de"
				else
					"#eee"
				end,
				columns: [{
						field: "Erledigt",
						title: arcCheckBox({
								value: if cnt(list[Erledigt = true]) != cnt(list) then
									false
								else
									if cnt(list[Erledigt = null]) = cnt(list) then
										null
									else
										if cnt(list[Erledigt = true]) = cnt(list) then
											true
										end
									end
								end
							}),
						value: arcCheckBox({
								value: Erledigt
							}),
						width: "40px",
						align: "center",
						fixed: "left",
						actions: [{
								recordId: Nr,
								type: "update",
								field: "G",
								value: if Erledigt = true then null else true end,
								headerAction: true
							}],
						groupValue: arcCustomIcon({
								name: "caret-circle-double-down-fill"
							})
					}, {
						field: "Aufgabe",
						title: "Aufgabe",
						width: "",
						value: replace(Aufgabe, ">", "❯"),
						actions: [{
								recordId: Nr,
								type: "popup",
								showPopupButton: true
							}],
						groupValue: html("<b>" + Auftrag.Titel + "</b>"),
						groupByValue: Auftrag.Nr
					}, {
						field: "'Erledigt am'",
						title: "Beschreibung",
						value: arcCustomInput({
								uniqueId: "Mein-Textarea-" + Nr,
								recordId: Nr,
								fieldId: "B",
								title: Beschreibung,
								value: Beschreibung,
								type: "textarea",
								embedded: true,
								disabled: false,
								width: "",
								height: "auto",
								minHeight: "40px",
								fontColor: "",
								fontSize: "",
								fontWeight: "",
								backgroundColor: "",
								borderWidth: "",
								borderColor: "",
								borderRadius: "",
								placeholderSettings: {
									value: "Beschreibe die Aufgabe..."
								},
								focusAction: {
									width: "",
									showFocusOutline: "",
									outlineWidth: "",
									outlineColor: ""
								},
								alignX: "left",
								paddingX: ""
							}),
						align: "left",
						width: "280px"
					}, {
						field: "'Erledigt am'",
						title: "Erledigt am",
						value: arcCustomInput({
								uniqueId: "Mein-Input-" + Nr,
								recordId: Nr,
								fieldId: "A1",
								title: text(Startdatum),
								value: text(Startdatum),
								type: "date",
								embedded: true,
								disabled: false,
								width: "",
								height: "",
								fontColor: "",
								fontSize: "",
								fontWeight: "",
								backgroundColor: "#fff6d8",
								borderWidth: "",
								borderColor: "",
								borderRadius: "",
								placeholderSettings: {
									value: "Datum eintragen",
									fontColor: "#e9595c",
									backgroundColor: "#fff7f7"
								},
								focusAction: {
									width: "",
									showFocusOutline: "",
									outlineWidth: "",
									outlineColor: ""
								},
								alignX: "left",
								paddingX: ""
							}),
						align: "left",
						width: "180px"
					}, {
						field: "Aufgaben",
						title: "Aufgaben",
						value: arcCustomProgressBar({
								uniqueId: "",
								width: "",
								fontSize: "",
								fontColor: "",
								backgroundColor: "",
								progressColor: "",
								valueTotal: cnt(Unteraufgaben),
								valueProgress: cnt(Unteraufgaben[Erledigt = true]),
								valueText: cnt(Unteraufgaben[Erledigt = true]) + "/" + cnt(Unteraufgaben)
							}),
						align: "left",
						width: "150px",
						groupValue: arcCustomProgressBar({
								uniqueId: "Erledigte Aufgaben",
								title: "",
								width: "",
								fontSize: "",
								fontColor: "",
								backgroundColor: "#fff",
								progressColor: "",
								valueTotal: cnt(Auftrag.Aufgaben),
								valueProgress: cnt(Auftrag.Aufgaben[Erledigt = true]),
								valueText: cnt(Auftrag.Aufgaben[Erledigt = true]) + "/" + cnt(Auftrag.Aufgaben)
							})
					}, {
						field: "",
						title: "",
						value: arcCustomButton({
								uniqueId: "Unteraufgabe erstellen" + Nr,
								title: "Unteraufgabe",
								width: "100%",
								icon: arcCustomIcon({
										name: "plus-bold",
										color: "#0062AA"
									}),
								fontSize: "",
								fontColor: "#0062AA",
								iconColor: "#0062AA",
								backgroundColor: "#0062AA33",
								borderColor: "#0062AA",
								borderRadius: "50px",
								showBadge: false,
								badgeTitle: cnt(Unteraufgaben),
								badgeColor: "",
								badgeBackground: "",
								badgeBorderColor: "",
								badgePosition: "",
								hoverActions: {
									fontColor: "#ffffff",
									iconColor: "#ffffff",
									backgroundColor: "#0062AA",
									borderColor: "#0062AA",
									animation: "0.5s"
								},
								actions: [{
										type: "create",
										tableId: "B",
										popup: true,
										changeFieldValues: [{
												fieldId: "S",
												value: number(Nr)
											}]
									}]
							}),
						align: "left",
						width: "180px"
					}, {
						field: "Status",
						title: "Status",
						value: arcCustomSelect({
								uniqueId: "Status" + Nr,
								currentValue: text(Status),
								recordId: Nr,
								field: "Q",
								width: "100%",
								height: "30px",
								fontSize: "10px",
								placeholder: "Status wählen",
								emptyValue: "Zurücksetzen",
								items: let id := Nr;
								(select Status_Aufgabe).[{
										title: Bezeichnung,
										active: number(id.Status) = number(Nr),
										value: number(Nr)
									}]
							}),
						align: "right",
						width: "150px"
					}, {
						field: "delete",
						title: arcCustomIcon({
								name: "trash"
							}),
						width: "40px",
						align: "center",
						value: arcCustomIcon({
								name: "trash"
							}),
						actions: [{
								recordId: Nr,
								type: "delete"
							}]
					}]
			}],
		footer: {
			showFooter: true,
			showActionButton: false,
			actionButtonTitle: "Neue Aufgabe hinzufügen",
			leftSideContent: arcCustomButton({
					uniqueId: "Button popUp" + Nr,
					title: "Neue Checkliste hinzufügen",
					width: "",
					icon: arcCustomIcon({
							name: "plus-bold",
							color: "#0062AA"
						}),
					fontSize: "",
					fontColor: "#0062AA",
					iconColor: "#0062AA",
					backgroundColor: "#0062AA33",
					borderColor: "#0062AA",
					borderRadius: "50px",
					showBadge: false,
					badgeTitle: "",
					badgeColor: "",
					badgeBackground: "",
					badgeBorderColor: "",
					badgePosition: "",
					hoverActions: {
						fontColor: "#ffffff",
						iconColor: "#ffffff",
						backgroundColor: "#0062AA",
						borderColor: "#0062AA",
						animation: "0.8s"
					},
					actions: [{
							type: "create",
							tableId: "C",
							popup: true,
							changeFieldValues: [{
									fieldId: "",
									value: ""
								}, {
									fieldId: "",
									value: ""
								}]
						}]
				}),
			rightSideContent: arcCustomPagination({
					uniqueId: Nr,
					editable: true,
					recordId: current.Nr,
					fieldId: "P",
					direction: "horizontal",
					title: current.'Aktuelle Seite',
					value: current.'Aktuelle Seite',
					total: ceil(cnt(list) / maxEntries),
					totalPrefix: " von "
				})
		}
	};
arcCustomTable(data)

Arc Rider Ventures GmbH

© 2025

Arc Rider Ventures GmbH

© 2025