diff --git a/components/EntityList.vue b/components/EntityList.vue
new file mode 100644
index 0000000..fbf0108
--- /dev/null
+++ b/components/EntityList.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+ + {{dataType.labelSingle}}
+
+
+
+
+
+
+
+
+
+
+
+ Spalten
+
+
+
+
+ Filter
+
+
+
+
+
+ router.push(`/projects/show/${i.id}`) "
+ :empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: `Keine ${dataType.label} anzuzeigen` }"
+ >
+
+
+ {{row[column.key]}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/columnRenderings/customer.vue b/components/columnRenderings/customer.vue
new file mode 100644
index 0000000..139b2ea
--- /dev/null
+++ b/components/columnRenderings/customer.vue
@@ -0,0 +1,13 @@
+
+
+
+ {{props.row.customer ? props.row.customer.name : ''}}
+
diff --git a/components/columnRenderings/plant.vue b/components/columnRenderings/plant.vue
new file mode 100644
index 0000000..3467c70
--- /dev/null
+++ b/components/columnRenderings/plant.vue
@@ -0,0 +1,13 @@
+
+
+
+ {{props.row.plant ? props.row.plant.name : ''}}
+
diff --git a/components/columnRenderings/projecttype.vue b/components/columnRenderings/projecttype.vue
new file mode 100644
index 0000000..fb1cd3a
--- /dev/null
+++ b/components/columnRenderings/projecttype.vue
@@ -0,0 +1,13 @@
+
+
+
+ {{props.row.projecttype ? props.row.projecttype.name : ''}}
+
diff --git a/pages/projects/index.vue b/pages/projects/index.vue
index 6883229..09f3284 100644
--- a/pages/projects/index.vue
+++ b/pages/projects/index.vue
@@ -1,194 +1,36 @@
-
-
-
-
-
-
-
-
- + Projekt
-
-
-
-
-
-
-
-
-
-
- Typen
-
-
-
-
-
-
-
- Spalten
-
-
-
-
-
-
-
-
- router.push(`/projects/show/${i.id}`) "
- :empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine Projekte anzuzeigen' }"
- >
-
- {{row.name}}
- {{row.name}}
-
-
- {{row.projecttype ? row.projecttype.name : ""}}
-
-
- {{getActivePhaseLabel(row)}}
-
-
- {{row.customer ? row.customer.name : ""}}
-
-
- {{row.plant ? row.plant.name : ""}}
-
-
- {{row.users.map(i => dataStore.getProfileById(i).fullName).join(", ")}}
-
-
-
+
\ No newline at end of file
diff --git a/stores/data.js b/stores/data.js
index 89b847e..bcbbeb0 100644
--- a/stores/data.js
+++ b/stores/data.js
@@ -5,6 +5,10 @@ import {useNumberRange} from "~/composables/useNumberRange.js";
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
+import projecttype from "~/components/columnRenderings/projecttype.vue"
+import customer from "~/components/columnRenderings/customer.vue"
+import plant from "~/components/columnRenderings/plant.vue"
+
// @ts-ignore
export const useDataStore = defineStore('data', () => {
@@ -60,6 +64,54 @@ export const useDataStore = defineStore('data', () => {
redirect:true,
historyItemHolder: "project",
numberRangeHolder: "projectNumber",
+ filters: [
+ {
+ name: "Abgeschlossen",
+ default: true,
+ "filterFunction": function (row) {
+ if(row.phases && row.phases.length > 0) {
+ return row.phases.find(i => i.active).label !== "Abgeschlossen";
+ } else {
+ return true
+ }
+
+ }
+ }
+ ],
+ templateColumns: [
+ {
+ key: "projectNumber",
+ label: "Projektnummer"
+ },
+ {
+ key: "projecttype",
+ label: "Typ",
+ component: projecttype
+ },{
+ key: "phase",
+ label: "Phase"
+ },{
+ key: "name",
+ label: "Name"
+ },
+ {
+ key: "customer",
+ label: "Kunde",
+ component: customer
+ },
+ {
+ key: "notes",
+ label: "Notizen",
+ },
+ {
+ key: "plant",
+ label: "Objekt",
+ component: plant
+ },
+ {
+ key: "profiles",
+ label: "Benutzer"
+ }]
},
vehicles: {
label: "Fahrzeuge",