@piveau/dpi 0.2.0-alpha.63 → 0.2.0-alpha.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,70 +1,71 @@
1
- import { reactive as c, createElementBlock as u, openBlock as i, createElementVNode as s, createVNode as m, Fragment as g, renderList as p, unref as o, createBlock as f } from "vue";
2
- import { FormKit as b } from "@formkit/vue";
3
- import w from "../../../components/StepActionsSection.vue.js";
4
- import k from "../TextArea/TextAreaDefinition.js";
1
+ import { reactive as h, createElementBlock as u, openBlock as o, createElementVNode as s, createVNode as p, Fragment as g, renderList as f, unref as d, createBlock as b } from "vue";
2
+ import { FormKit as w } from "@formkit/vue";
3
+ import { umsetzenQuestions as a } from "../../../composables/project-transformer/questions.js";
4
+ import k from "../../../components/StepActionsSection.vue.js";
5
+ import z from "../TextArea/TextAreaDefinition.js";
5
6
  /* empty css */
6
- import z from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
7
- const S = { class: "project-phasen-umstezen" }, v = { class: "project-phasen-umstezen-content" }, d = 1e3, V = {
7
+ import v from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
8
+ const S = { class: "project-phasen-umstezen" }, V = { class: "project-phasen-umstezen-content" }, l = 1e3, _ = {
8
9
  __name: "UmstezenStep",
9
- setup(_) {
10
- const n = c({
10
+ setup(j) {
11
+ const n = h({
11
12
  questions: {
12
13
  projectTriggers: {
13
- question: "Wie haben Sie die Zusammenarbeit mit den Dienstleistern organisiert und wie wurden relevante Stakeholder in Entscheidungsprozesse eingebunden (z.B. Meetingstruktur oder Frameworks)?",
14
+ question: a.projectTriggers,
14
15
  placeholder: "Wir haben einen Projektplan erstellt, der u.a. eine Roadmap und die Projektstruktur mit klaren Verantwortlichkeiten und Ansprechpartnern auf beiden Seiten enthielt. Es gab regelmäßige Jour-Fixe-Termine, in denen wir den Projektfortschritt gemeinsam mit dem Dienstleister besprochen und offene Punkte adressiert haben. Meilensteine und wichtige Entscheidungen wurden mit den Stakeholdern abgestimmt und protokolliert.",
15
16
  answer: ""
16
17
  },
17
18
  involvedStakeholders: {
18
- question: "Gab es Verzögerungen und wenn ja, was waren die Gründe?",
19
+ question: a.involvedStakeholders,
19
20
  placeholder: "Ja, im Projektverlauf kam es zu einigen Verzögerungen. Hauptursache war die zeitaufwändige Klärung von offenen technischen Fragen, insbesondere bei der Anbindung bestehender Fachsysteme und Datenquellen. Teilweise lagen Datenformate nicht wie erwartet vor oder es bestanden Datenschutzbedenken, die zunächst gelöst werden mussten. Dazu kamen z.B. europaweite Lieferengpässe bei den Sensoren, die wir verbaut haben.",
20
21
  answer: ""
21
22
  },
22
23
  dataCollectionMethod: {
23
- question: "Welche Schnittstellen wurden genutzt und traten technische Herausforderungen auf?",
24
+ question: a.dataCollectionMethod,
24
25
  placeholder: "Wir haben verschiedene Schnittstellen zu bestehenden Geoinformationssystemen (GIS), Wetterdaten- und Pegelstanddiensten sowie internen Verwaltungsdaten genutzt. Bei der Integration gab es Herausforderungen etwa durch unterschiedliche Datenformate, unklare Zugriffsbeschränkungen oder fehlende API-Standards.",
25
26
  answer: ""
26
27
  },
27
28
  budgetPlanning: {
28
- question: "Welche Überlegungen sind in Ihre Entscheidung für eine Open-Source-Lösung geflossen und welche Erfahrungen haben Sie bisher damit gemacht?",
29
+ question: a.budgetPlanning,
29
30
  placeholder: "Wir haben mit Open-Source-Lösungen gute Erfahrungen gemacht. Wir sind flexibel und können die Software an unsere Bedürfnisse anpassen. Die Kosten sind niedrig, dafür brauchen wir mehr eigenes technisches Know-how und Zeit für Wartung. Insgesamt überwiegen für uns die Vorteile, vor allem was Unabhängigkeit und Nachhaltigkeit angeht.",
30
31
  answer: ""
31
32
  }
32
33
  }
33
- }), l = Object.keys(n.questions).map((r) => ({
34
+ }), m = Object.keys(n.questions).map((r) => ({
34
35
  name: r,
35
36
  text: n.questions[r].question
36
37
  }));
37
- function h(r, t) {
38
- n.questions[r].answer = t.slice(0, d);
38
+ function c(r, t) {
39
+ n.questions[r].answer = t.slice(0, l);
39
40
  }
40
- return (r, t) => (i(), u("div", S, [
41
+ return (r, t) => (o(), u("div", S, [
41
42
  t[1] || (t[1] = s("div", { class: "project-phasen-umstezen-header" }, [
42
43
  s("h4", null, "Umsetzen")
43
44
  ], -1)),
44
- s("div", v, [
45
+ s("div", V, [
45
46
  t[0] || (t[0] = s("p", { class: "project-phasen-umstezen-description" }, " Von der Dienstleistersteuerung bis zur Meilensteinerreichung. ", -1)),
46
- (i(!0), u(g, null, p(o(l), (e) => (i(), f(o(b), {
47
+ (o(!0), u(g, null, f(d(m), (e) => (o(), b(d(w), {
47
48
  id: e.name,
48
49
  placeholder: n.questions[e.name].placeholder,
49
50
  key: e.name,
50
51
  modelValue: n.questions[e.name].answer,
51
- "onUpdate:modelValue": (a) => n.questions[e.name].answer = a,
52
+ "onUpdate:modelValue": (i) => n.questions[e.name].answer = i,
52
53
  labelWeight: "bold",
53
54
  label: e.text,
54
- type: o(k),
55
+ type: d(z),
55
56
  name: e.name,
56
57
  validation: "length:0,1000",
57
58
  hint: "true",
58
- help: `${n.questions[e.name].answer.length || 0} von ${d} Zeichen`,
59
+ help: `${n.questions[e.name].answer.length || 0} von ${l} Zeichen`,
59
60
  "count-hint": !0,
60
- maxlength: d,
61
- onInput: (a) => h(e.name, a)
61
+ maxlength: l,
62
+ onInput: (i) => c(e.name, i)
62
63
  }, null, 8, ["id", "placeholder", "modelValue", "onUpdate:modelValue", "label", "type", "name", "help", "onInput"]))), 128))
63
64
  ]),
64
- m(w)
65
+ p(k)
65
66
  ]));
66
67
  }
67
- }, P = /* @__PURE__ */ z(V, [["__scopeId", "data-v-8d4cca45"]]);
68
+ }, U = /* @__PURE__ */ v(_, [["__scopeId", "data-v-fa9ecd8f"]]);
68
69
  export {
69
- P as default
70
+ U as default
70
71
  };
@@ -1,50 +1,51 @@
1
- import { reactive as z, createElementBlock as c, openBlock as s, createElementVNode as a, createVNode as o, Fragment as v, renderList as S, unref as u, createBlock as x, withCtx as B, withDirectives as h, vShow as m } from "vue";
2
- import { FormKit as W } from "@formkit/vue";
3
- import j from "../../../components/StepActionsSection.vue.js";
4
- import _ from "../TextArea/TextAreaDefinition.js";
5
- import g from "../ButtonV3.vue.js";
1
+ import { reactive as v, createElementBlock as m, openBlock as o, createElementVNode as a, createVNode as d, Fragment as S, renderList as x, unref as l, createBlock as B, withCtx as _, withDirectives as h, vShow as g } from "vue";
2
+ import { FormKit as j } from "@formkit/vue";
3
+ import { weiterdenkenQuestions as s } from "../../../composables/project-transformer/questions.js";
4
+ import V from "../../../components/StepActionsSection.vue.js";
5
+ import y from "../TextArea/TextAreaDefinition.js";
6
+ import p from "../ButtonV3.vue.js";
6
7
  /* empty css */
7
- import P from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
8
- const V = { class: "project-phasen-weiterdenken" }, y = { class: "project-phasen-weiterdenken-content" }, C = { class: "actions" }, d = 1e3, E = {
8
+ import C from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
9
+ const E = { class: "project-phasen-weiterdenken" }, P = { class: "project-phasen-weiterdenken-content" }, W = { class: "actions" }, u = 1e3, A = {
9
10
  __name: "WeiterdenkenStep",
10
- setup(A) {
11
- const n = z({
11
+ setup(q) {
12
+ const n = v({
12
13
  questions: {
13
14
  projectTriggers: {
14
- question: "Was sind Ihre wichtigsten Learnings aus dem Projekt? Was würden Sie beim nächsten Use Case anders machen?",
15
+ question: s.projectTriggers,
15
16
  placeholder: "Ein zentrales Learning war die Bedeutung einer klaren Projektstruktur und offener Kommunikation — intern wie extern. Bei Projekten mit vielen Beteiligten ist es wichtig, Zuständigkeiten und Kommunikationswege eindeutig zu definieren. Außerdem haben wir gelernt, technische Vorarbeiten, insbesondere bei Datenqualität und Schnittstellen, nicht zu unterschätzen.",
16
17
  answer: ""
17
18
  },
18
19
  involvedStakeholders: {
19
- question: "Wird die Wirksamkeit Ihres Projekts überwacht und wenn ja, wie? Ist der erwartete Nutzen eingetreten (z.B. ökologisch, sozial oder monetär)?",
20
+ question: s.involvedStakeholders,
20
21
  placeholder: "Ja, die Wirksamkeit unseres Projekts wird regelmäßig überprüft. Wir haben Erfolgskriterien gemeinsam mit den nutzenden Stellen definiert – dazu zählen z.B. die Genauigkeit der Prognosen oder die Reaktionsgeschwindigkeit bei Hochwasserlagen. Einmal jährlich werten wir die Ergebnisse gemeinsam mit den beteiligten Fachbereichen aus. Erste Auswertungen und Praxistests zeigen, dass die Systeme bei Starkregenereignissen in den vergangenen Monaten bereits einen echten Mehrwert gebracht haben. Es konnten Schäden durch frühzeitige Warnungen verringert und Abläufe in der Gefahrenabwehr verbessert werden.",
21
22
  answer: ""
22
23
  },
23
24
  dataCollectionMethod: {
24
- question: "Gibt es Pläne für eine Skalierung oder Weiterentwicklung? Wenn ja, wie sichern Sie die Finanzierung dafür?",
25
+ question: s.dataCollectionMethod,
25
26
  placeholder: "Ja, wir planen, das System weiterzuentwickeln und auf weitere Anwendungsfälle (wie Sturzfluten oder Dürremanagement) auszuweiten. Dafür suchen wir die Zusammenarbeit mit benachbarten Kommunen und regionalen Partnern, um Ressourcen zu bündeln und Synergien zu schaffen. Durch regelmäßige Erfolgskontrolle und transparente Berichterstattung sichern wir die Akzeptanz und Bereitschaft zur weiteren Finanzierung.",
26
27
  answer: ""
27
28
  },
28
29
  budgetPlanning: {
29
- question: "Welche externen Unterstützungsangebote haben Ihnen geholfen oder auch gefehlt (z.B. Förderprogramme, Netzwerke, Austausch mit anderen Kommunen)?",
30
+ question: s.budgetPlanning,
30
31
  placeholder: "Besonders wichtig für uns waren Förderprogramme, wie das Landesprogramm zur Digitalisierung im Bevölkerungsschutz. Dadurch konnten wir einen Großteil der Kosten für Software, Sensorik und externe Beratung abdecken. Gefehlt haben uns regelmäßige, themenspezifische Austauschformate oder Workshops mit anderen Kommunen, um voneinander zu lernen und Synergien besser nutzen zu können.",
31
32
  answer: ""
32
33
  }
33
34
  }
34
- }), p = Object.keys(n.questions).map((t) => ({
35
+ }), w = Object.keys(n.questions).map((t) => ({
35
36
  name: t,
36
37
  text: n.questions[t].question
37
38
  }));
38
- function w(t, r) {
39
- n.questions[t].answer = r.slice(0, d);
39
+ function k(t, r) {
40
+ n.questions[t].answer = r.slice(0, u);
40
41
  }
41
- return (t, r) => (s(), c("div", V, [
42
+ return (t, r) => (o(), m("div", E, [
42
43
  r[1] || (r[1] = a("div", { class: "project-phasen-weiterdenken-header" }, [
43
44
  a("h4", null, "Weiterdenken")
44
45
  ], -1)),
45
- a("div", y, [
46
+ a("div", P, [
46
47
  r[0] || (r[0] = a("p", { class: "project-phasen-weiterdenken-description" }, " Von den Learnings bis zur Skalierung der Projektergebnisse. ", -1)),
47
- (s(!0), c(v, null, S(u(p), (e) => (s(), x(u(W), {
48
+ (o(!0), m(S, null, x(l(w), (e) => (o(), B(l(j), {
48
49
  key: e.name,
49
50
  id: e.name,
50
51
  placeholder: n.questions[e.name].placeholder,
@@ -52,46 +53,46 @@ const V = { class: "project-phasen-weiterdenken" }, y = { class: "project-phasen
52
53
  "onUpdate:modelValue": (i) => n.questions[e.name].answer = i,
53
54
  labelWeight: "bold",
54
55
  label: e.text,
55
- type: u(_),
56
+ type: l(y),
56
57
  name: e.name,
57
58
  validation: "length:0,1000",
58
59
  hint: "true",
59
- help: `${n.questions[e.name].answer.length || 0} von ${d} Zeichen`,
60
+ help: `${n.questions[e.name].answer.length || 0} von ${u} Zeichen`,
60
61
  "count-hint": !0,
61
- onInput: (i) => w(e.name, i),
62
- maxlength: d
62
+ onInput: (i) => k(e.name, i),
63
+ maxlength: u
63
64
  }, null, 8, ["id", "placeholder", "modelValue", "onUpdate:modelValue", "label", "type", "name", "help", "onInput"]))), 128))
64
65
  ]),
65
- o(j, { "next-text": "Weiter zu den Technischen Prozessschritten" }, {
66
- "prev-and-next": B(({
66
+ d(V, { "next-text": "Weiter zu den Technischen Prozessschritten" }, {
67
+ "prev-and-next": _(({
67
68
  hidePrevious: e,
68
69
  hideNext: i,
69
- previousText: k,
70
- nextText: l,
70
+ previousText: f,
71
+ nextText: c,
71
72
  handlePrevious: b,
72
- handleSubmit: f
73
+ handleSubmit: z
73
74
  }) => [
74
- a("div", C, [
75
- h(o(g, {
75
+ a("div", W, [
76
+ h(d(p, {
76
77
  class: "previousButton",
77
78
  variant: "secondary",
78
79
  size: "large",
79
80
  type: "button",
80
- "button-text": k,
81
+ "button-text": f,
81
82
  "icon-start": "CaretLeft",
82
83
  onClick: b
83
84
  }, null, 8, ["button-text", "onClick"]), [
84
- [m, !e]
85
+ [g, !e]
85
86
  ]),
86
- h(o(g, {
87
+ h(d(p, {
87
88
  size: "large",
88
89
  variant: t.nextVariant,
89
90
  type: "button",
90
- "button-text": l,
91
- "icon-end": l === "Als Entwurf speichern" ? null : "CaretRight",
92
- onClick: f
91
+ "button-text": c,
92
+ "icon-end": c === "Als Entwurf speichern" ? null : "CaretRight",
93
+ onClick: z
93
94
  }, null, 8, ["variant", "button-text", "icon-end", "onClick"]), [
94
- [m, !i]
95
+ [g, !i]
95
96
  ])
96
97
  ])
97
98
  ]),
@@ -99,7 +100,7 @@ const V = { class: "project-phasen-weiterdenken" }, y = { class: "project-phasen
99
100
  })
100
101
  ]));
101
102
  }
102
- }, N = /* @__PURE__ */ P(E, [["__scopeId", "data-v-e7f614f8"]]);
103
+ }, Z = /* @__PURE__ */ C(A, [["__scopeId", "data-v-2ff2d2ed"]]);
103
104
  export {
104
- N as default
105
+ Z as default
105
106
  };
@@ -1,89 +1,89 @@
1
- import { pipe as A } from "effect";
2
- import * as f from "effect/Option";
1
+ import { pipe as N } from "effect";
2
+ import * as u from "effect/Option";
3
3
  import * as H from "jsonld";
4
- import { schemaProject as C } from "../../schema/projectLdSchema.js";
5
- import { getFirstItem as G, extractStringValue as t, extractLocalizedString as N } from "../useDpiSimpleLoader.js";
6
- import { isNonNullable as h } from "./encodeProject.js";
7
- import { PREFIXES as F, nonEmpty as I } from "./shared.js";
8
- function W(n) {
9
- const a = (n || "").trim();
10
- if (!a)
4
+ import { schemaProject as _ } from "../../schema/projectLdSchema.js";
5
+ import { getFirstItem as z, extractStringValue as t, extractLocalizedString as G } from "../useDpiSimpleLoader.js";
6
+ import { isNonNullable as m } from "./encodeProject.js";
7
+ import { PREFIXES as M, nonEmpty as S } from "./shared.js";
8
+ function E(n) {
9
+ const i = (n || "").trim();
10
+ if (!i)
11
11
  return "";
12
12
  try {
13
- const r = new URL(a).pathname.split("/").filter(Boolean);
13
+ const r = new URL(i).pathname.split("/").filter(Boolean);
14
14
  return r[r.length - 1] || "";
15
15
  } catch {
16
- return a;
16
+ return i;
17
17
  }
18
18
  }
19
- async function K(n) {
20
- const a = {
21
- "@context": F,
19
+ async function $(n) {
20
+ const i = {
21
+ "@context": M,
22
22
  "@type": "schema:Project"
23
- }, s = await H.frame(n, a, {
23
+ }, a = await H.frame(n, i, {
24
24
  embed: "@always",
25
25
  omitGraph: !0
26
- }), r = await H.compact(s, F, {
26
+ }), r = await H.compact(a, M, {
27
27
  compactArrays: !1,
28
28
  graph: !1
29
- }), l = C.safeParse(G(r == null ? void 0 : r["@graph"]));
30
- if (!l.success)
29
+ }), c = _.safeParse(z(r == null ? void 0 : r["@graph"]));
30
+ if (!c.success)
31
31
  throw new Error(`Failed to parse project
32
32
 
33
- ${l.error.message}`);
34
- return l.data;
33
+ ${c.error.message}`);
34
+ return c.data;
35
35
  }
36
- function U(n) {
37
- return I(G(n["@id"]));
36
+ function q(n) {
37
+ return S(z(n["@id"]));
38
38
  }
39
- function V(n, a) {
40
- var r, l;
41
- const { visibility: s } = a;
39
+ function U(n, i) {
40
+ var r, c;
41
+ const { visibility: a } = i;
42
42
  return {
43
43
  "Auffindbarkeit/Sichtbarkeit": {
44
- visibility: s
44
+ visibility: a
45
45
  },
46
46
  "Auffindbarkeit/Kategorien": {
47
- categories: ((r = n["dcat:theme"]) == null ? void 0 : r.map(U).filter(h)) || []
47
+ categories: ((r = n["dcat:theme"]) == null ? void 0 : r.map(q).filter(m)) || []
48
48
  },
49
49
  "Auffindbarkeit/Anwendungsbereiche": {
50
- applications: ((l = n["schema:application"]) == null ? void 0 : l.filter(h)) || []
50
+ applications: ((c = n["schema:application"]) == null ? void 0 : c.filter(m)) || []
51
51
  }
52
52
  };
53
53
  }
54
54
  function R(n) {
55
- var s;
56
- const a = (s = n["dcat:contactPoint"]) == null ? void 0 : s.map((r) => ({
57
- name: I(t(r["vcard:fn"])),
58
- mail: I(t(r["vcard:hasEmail"])),
59
- phone: I(t(r["vcard:hasTelephone"]))
60
- })).filter(h);
55
+ var a;
56
+ const i = (a = n["dcat:contactPoint"]) == null ? void 0 : a.map((r) => ({
57
+ name: S(t(r["vcard:fn"])),
58
+ mail: S(t(r["vcard:hasEmail"])),
59
+ phone: S(t(r["vcard:hasTelephone"]))
60
+ })).filter(m);
61
61
  return {
62
62
  "Grundlegende Informationen/Name": {
63
- projectName: A(
64
- f.fromNullable(N(n["dct:title"], "de")),
65
- f.flatMap((r) => I(r) ? f.some(r) : f.none()),
66
- f.getOrThrowWith(() => new Error("Project name is missing"))
63
+ projectName: N(
64
+ u.fromNullable(G(n["dct:title"], "de")),
65
+ u.flatMap((r) => S(r) ? u.some(r) : u.none()),
66
+ u.getOrThrowWith(() => new Error("Project name is missing"))
67
67
  )
68
68
  },
69
69
  "Grundlegende Informationen/Beschreibung": {
70
- projectDescription: A(
71
- f.fromNullable(N(n["dct:description"], "de")),
70
+ projectDescription: N(
71
+ u.fromNullable(G(n["dct:description"], "de")),
72
72
  // O.flatMap(s => nonEmpty(s) ? O.some(s) : O.none()),
73
73
  // O.getOrThrowWith(() => new Error('Project description is missing')),
74
- f.getOrElse(() => "")
74
+ u.getOrElse(() => "")
75
75
  )
76
76
  },
77
77
  "Grundlegende Informationen/Projektstatus": {
78
- projectName: A(
79
- f.fromNullable(n["schema:status"]),
78
+ projectName: N(
79
+ u.fromNullable(n["schema:status"]),
80
80
  // O.flatMap(s => nonEmpty(s) ? O.some(s) : O.none()),
81
81
  // O.getOrThrowWith(() => new Error('Project status is missing')),
82
- f.getOrElse(() => "")
82
+ u.getOrElse(() => "")
83
83
  )
84
84
  },
85
85
  "Grundlegende Informationen/Organisation": {
86
- contact: G(a || []) || {
86
+ contact: z(i || []) || {
87
87
  name: "",
88
88
  mail: "",
89
89
  phone: ""
@@ -91,81 +91,57 @@ function R(n) {
91
91
  }
92
92
  };
93
93
  }
94
- function _(n) {
95
- var a, s, r, l, p, k, D, i;
94
+ function V(n) {
95
+ var i, a, r, c, h, P, v, o;
96
96
  return {
97
97
  "Optionale Daten": {
98
- partners: ((a = n["dct:contributor"]) == null ? void 0 : a.map((c) => ({
99
- name: t(c["foaf:name"]),
100
- url: t(c["foaf:homepage"])
101
- })).filter(h)) || [],
102
- requiredExpertise: ((s = n["schema:skills"]) == null ? void 0 : s.map(t).filter(h)) || [],
103
- references: ((l = (r = n["dct:references"]) == null ? void 0 : r.filter((c) => c["dct:type"] === "image")) == null ? void 0 : l.map((c) => ({
104
- homepage: t(c["schema:url"])
105
- })).filter(h)) || [],
98
+ partners: ((i = n["dct:contributor"]) == null ? void 0 : i.map((l) => ({
99
+ name: t(l["foaf:name"]),
100
+ url: t(l["foaf:homepage"])
101
+ })).filter(m)) || [],
102
+ requiredExpertise: ((a = n["schema:skills"]) == null ? void 0 : a.map(t).filter(m)) || [],
103
+ references: ((c = (r = n["dct:references"]) == null ? void 0 : r.filter((l) => l["dct:type"] === "image")) == null ? void 0 : c.map((l) => ({
104
+ homepage: t(l["schema:url"])
105
+ })).filter(m)) || [],
106
106
  startDate: t(n["schema:startDate"] || ""),
107
107
  endDate: t(n["schema:endDate"] || ""),
108
- budget: t(((p = n["schema:amount"]) == null ? void 0 : p["schema:value"]) || ""),
109
- budgetDescription: t(((k = n["schema:amount"]) == null ? void 0 : k["schema:description"]) || ""),
108
+ budget: t(((h = n["schema:amount"]) == null ? void 0 : h["schema:value"]) || ""),
109
+ budgetDescription: t(((P = n["schema:amount"]) == null ? void 0 : P["schema:description"]) || ""),
110
110
  // todo:
111
- links: ((i = (D = n["dct:references"]) == null ? void 0 : D.filter((c) => c["dct:type"] === "documentation")) == null ? void 0 : i.map((c) => ({
112
- name: t(c["dct:title"]),
113
- url: t(c["schema:url"]),
114
- description: t(c["dct:description"])
115
- })).filter(h)) || []
111
+ links: ((o = (v = n["dct:references"]) == null ? void 0 : v.filter((l) => l["dct:type"] === "documentation")) == null ? void 0 : o.map((l) => ({
112
+ name: t(l["dct:title"]),
113
+ url: t(l["schema:url"]),
114
+ description: t(l["dct:description"])
115
+ })).filter(m)) || []
116
116
  }
117
117
  };
118
118
  }
119
- function $(n) {
120
- const a = n["schema:hasPart"] ?? [], s = (u) => a.find((m) => m["dct:type"] === u), r = (u) => {
121
- var g, w;
122
- const m = /* @__PURE__ */ new Map(), S = [...(u == null ? void 0 : u["schema:question"]) ?? []].sort((e, d) => {
123
- const y = Number.parseInt(t(e["schema:position"])), z = Number.parseInt(t(d["schema:position"]));
124
- return (Number.isNaN(y) ? 0 : y) - (Number.isNaN(z) ? 0 : z);
125
- });
126
- for (const e of S) {
127
- const d = (g = e["schema:text"]) == null ? void 0 : g.trim(), y = (w = e["schema:acceptedAnswer"]) == null ? void 0 : w.trim();
128
- d && y && m.set(d, y);
129
- }
130
- return m;
131
- }, l = {
132
- projectTriggers: "Was waren Ausloeser fuer das Projekt (z. B. rechtliche oder politische Vorgaben, intrinsische Motivation oder inspirierende Projekte aus anderen Kommunen)?",
133
- involvedStakeholders: "Welche relevanten Akteure innerhalb oder ausserhalb Ihrer Organisation haben Sie fruehzeitig involviert (z. B. um politische Rueckendeckung sicherzustellen)?",
134
- dataCollectionMethod: "Wie haben Sie den Bestand vorhandener Daten erhoben?",
135
- budgetPlanning: "Wie haben Sie das erste Budget berechnet und nachhaltig gesichert?"
136
- }, p = {
137
- requirementsGatherings: "Wie haben Sie die Anforderungen erhoben und dokumentiert (z. B. durch Markterkundung, externe Berater oder Workshops)?",
138
- tenderFormat: "Welche Ausschreibungsform haben Sie gewaehlt und warum? Gab es eine Vorlage oder Muster-Leistungsbeschreibung, die hilfreich war?",
139
- tenderTips: "Welche Tipps haben Sie fuer eine erfolgreiche Ausschreibung?",
140
- resourcePlanning: "Wie haben Sie die Ressourcenplanung fuer die Entwicklung und den Betrieb Ihres Digitalen Zwillings gestaltet und gesichert?"
141
- }, k = {
142
- projectTriggers: "Wie haben Sie die Zusammenarbeit mit den Dienstleistern organisiert und wie wurden relevante Stakeholder in Entscheidungsprozesse eingebunden?",
143
- involvedStakeholders: "Gab es Verzoegerungen und wenn ja, was waren die Gruende?",
144
- dataCollectionMethod: "Welche Schnittstellen wurden genutzt und traten technische Herausforderungen auf?",
145
- budgetPlanning: "Welche Ueberlegungen sind in Ihre Entscheidung fuer eine Open-Source-Loesung eingeflossen und welche Erfahrungen haben Sie gemacht?"
146
- }, D = {
147
- projectTriggers: "Was sind Ihre wichtigsten Learnings aus dem Projekt? Was wuerden Sie beim naechsten Use Case anders machen?",
148
- involvedStakeholders: "Wird die Wirksamkeit Ihres Projekts ueberwacht und wenn ja, wie? Ist der erwartete Nutzen eingetreten?",
149
- dataCollectionMethod: "Gibt es Plaene fuer eine Skalierung oder Weiterentwicklung? Wenn ja, wie sichern Sie die Finanzierung dafuer?",
150
- budgetPlanning: "Welche externen Unterstuetzungsangebote haben Ihnen geholfen oder auch gefehlt?"
151
- }, i = (u, m) => {
152
- const v = s(u), S = r(v), g = {};
153
- for (const [w, e] of Object.entries(m)) {
154
- const d = S.get(e);
155
- d && (g[w] = d);
119
+ function W(n) {
120
+ const i = n["schema:hasPart"] ?? [], a = (d) => i.find((f) => f["dct:type"] === d), r = (d) => {
121
+ var b;
122
+ const f = /* @__PURE__ */ new Map(), D = (d == null ? void 0 : d["schema:question"]) ?? [];
123
+ for (const p of D) {
124
+ const w = Number.parseInt(t(p["schema:position"])), e = (b = p["schema:acceptedAnswer"]) == null ? void 0 : b.trim();
125
+ !Number.isNaN(w) && e && f.set(w, e);
156
126
  }
157
- return g;
158
- }, c = i("Initiieren", l), b = i("Planen", p), j = i("Umsetzen", k), P = i("Weiterdenken", D);
127
+ return f;
128
+ }, c = (d, f) => {
129
+ const D = a(d), b = r(D), p = {};
130
+ return f.forEach((w, e) => {
131
+ const g = e + 1, j = b.get(g);
132
+ j && (p[w] = j);
133
+ }), p;
134
+ }, h = ["projectTriggers", "involvedStakeholders", "dataCollectionMethod", "budgetPlanning"], P = ["requirementsGatherings", "tenderFormat", "tenderTips", "resourcePlanning"], v = ["projectTriggers", "involvedStakeholders", "dataCollectionMethod", "budgetPlanning"], o = ["projectTriggers", "involvedStakeholders", "dataCollectionMethod", "budgetPlanning"], l = c("Initiieren", h), y = c("Planen", P), I = c("Umsetzen", v), k = c("Weiterdenken", o);
159
135
  return {
160
136
  "Projektphasen (optional)": {},
161
- "Projektphasen (optional)/Initiieren": c,
162
- "Projektphasen (optional)/Planen": b,
163
- "Projektphasen (optional)/Umsetzen": j,
164
- "Projektphasen (optional)/Weiterdenken": P
137
+ "Projektphasen (optional)/Initiieren": l,
138
+ "Projektphasen (optional)/Planen": y,
139
+ "Projektphasen (optional)/Umsetzen": I,
140
+ "Projektphasen (optional)/Weiterdenken": k
165
141
  };
166
142
  }
167
- function L(n) {
168
- const a = n["p-plan:hasStep"] ?? [], s = {
143
+ function X(n) {
144
+ const i = n["p-plan:hasStep"] ?? [], a = {
169
145
  datenerfassung: "1. Datenerfassung",
170
146
  datenverarbeitung: "2. Datenverarbeitung",
171
147
  datensimulation: "3. Datensimulation",
@@ -188,76 +164,76 @@ function L(n) {
188
164
  "4. Datenvisualisierung/Software": {},
189
165
  "4. Datenvisualisierung/Datensätze": {},
190
166
  "4. Datenvisualisierung/Hardware": {}
191
- }, l = (i) => `${i}/Grundlegende Informationen`, p = (i) => `${i}/Software`, k = (i) => `${i}/Datensätze`, D = (i) => `${i}/Hardware`;
192
- for (const i of a) {
193
- const c = (t(i["p-plan:Activity"] || "") || "").trim().toLowerCase(), b = s[c];
194
- if (!b)
167
+ }, c = (o) => `${o}/Grundlegende Informationen`, h = (o) => `${o}/Software`, P = (o) => `${o}/Datensätze`, v = (o) => `${o}/Hardware`;
168
+ for (const o of i) {
169
+ const l = (t(o["p-plan:Activity"] || "") || "").trim().toLowerCase(), y = a[l];
170
+ if (!y)
195
171
  continue;
196
- const j = N(i["dct:description"], "de") || "", P = j === "__EMPTY__" ? "" : j, u = (i["prov:used"] || []).map((e) => ({
172
+ const I = G(o["dct:description"], "de") || "", k = I === "__EMPTY__" ? "" : I, d = (o["prov:used"] || []).map((e) => ({
197
173
  name: t(e["dct:title"]) || ""
198
174
  // description: extractStringValue(m['dct:description']) || undefined,
199
- })).filter((e) => (e.name ?? "").length > 0), m = (i["dct:references"] || []).filter((e) => t(e["dct:type"]) === "documentation").map((e) => ({
175
+ })).filter((e) => (e.name ?? "").length > 0), f = (o["dct:references"] || []).filter((e) => t(e["dct:type"]) === "documentation").map((e) => ({
200
176
  name: t(e["dct:title"]) || "",
201
177
  url: t(e["schema:url"]) || "",
202
178
  description: t(e["dct:description"]) || void 0
203
179
  })).filter((e) => e.url.length > 0 && e.name.length > 0);
204
- (P || u.length > 0 || m.length > 0) && (r[l(b)] = {
205
- ...P ? { description: P } : {},
206
- ...u.length > 0 ? { methods: u } : {},
207
- ...m.length > 0 ? { links: m } : {}
180
+ (k || d.length > 0 || f.length > 0) && (r[c(y)] = {
181
+ ...k ? { description: k } : {},
182
+ ...d.length > 0 ? { methods: d } : {},
183
+ ...f.length > 0 ? { links: f } : {}
208
184
  });
209
- const v = i["p-plan:hasInputVar"] || [], S = v.filter((e) => t(e["@type"]) === "schema:SoftwareApplication").map((e) => ({
210
- id: W(t(e["dct:identifier"]) || ""),
211
- functionalities: (e["schema:featureList"] || []).map((d) => t(d)).filter(h)
185
+ const D = o["p-plan:hasInputVar"] || [], b = D.filter((e) => t(e["@type"]) === "schema:SoftwareApplication").map((e) => ({
186
+ id: E(t(e["dct:identifier"]) || ""),
187
+ functionalities: (e["schema:featureList"] || []).map((g) => t(g)).filter(m)
212
188
  })).filter((e) => e.id.length > 0);
213
- S.length > 0 && (r[p(b)] = {
214
- selected: S
189
+ b.length > 0 && (r[h(y)] = {
190
+ selected: b
215
191
  });
216
- const g = v.filter((e) => t(e["@type"]) === "dcat:Dataset").map((e) => ({ id: W(t(e["dct:identifier"]) || "") })).filter((e) => e.id.length > 0);
217
- g.length > 0 && (r[k(b)] = {
218
- selected: g
192
+ const p = D.filter((e) => t(e["@type"]) === "dcat:Dataset").map((e) => ({ id: E(t(e["dct:identifier"]) || "") })).filter((e) => e.id.length > 0);
193
+ p.length > 0 && (r[P(y)] = {
194
+ selected: p
219
195
  });
220
- const w = v.filter((e) => t(e["@type"]) === "ssn:System").map((e) => {
221
- const d = e["ssn:deployedSystem"], y = W(t(e["dct:identifier"]) || ""), z = d && typeof d == "object" ? W(t(d["@id"]) || d["@id"]) : "", q = y || z, x = N(e["dct:description"], "de") || void 0, E = (e["ssn:forProperty"] || []).map((o) => t(o)).filter(h), M = (e["sosa:hasLocation"] || []).map((o) => ({ lat: t(o["geo:lat"]) || "", lng: t(o["geo:long"]) || "" })).filter((o) => o.lat.length > 0 && o.lng.length > 0), B = (e["foaf:depiction"] || []).map((o) => U(o)).filter(h), T = (e["dct:references"] || []).filter((o) => t(o["dct:type"]) === "documentation").map((o) => ({
222
- name: t(o["dct:title"]) || "",
223
- url: t(o["schema:url"]) || "",
224
- description: t(o["dct:description"]) || void 0
225
- })).filter((o) => o.url.length > 0), O = (e["ssn-system:hasSystemCapability"] || []).map((o) => t(o)).filter(h);
196
+ const w = D.filter((e) => t(e["@type"]) === "ssn:System").map((e) => {
197
+ const g = e["ssn:deployedSystem"], j = E(t(e["dct:identifier"]) || ""), C = g && typeof g == "object" ? E(t(g["@id"]) || g["@id"]) : "", K = j || C, A = G(e["dct:description"], "de") || void 0, F = (e["ssn:forProperty"] || []).map((s) => t(s)).filter(m), O = (e["sosa:hasLocation"] || []).map((s) => ({ lat: t(s["geo:lat"]) || "", lng: t(s["geo:long"]) || "" })).filter((s) => s.lat.length > 0 && s.lng.length > 0), T = (e["foaf:depiction"] || []).map((s) => q(s)).filter(m), B = (e["dct:references"] || []).filter((s) => t(s["dct:type"]) === "documentation").map((s) => ({
198
+ name: t(s["dct:title"]) || "",
199
+ url: t(s["schema:url"]) || "",
200
+ description: t(s["dct:description"]) || void 0
201
+ })).filter((s) => s.url.length > 0), x = (e["ssn-system:hasSystemCapability"] || []).map((s) => t(s)).filter(m);
226
202
  return {
227
- id: q,
228
- ...x ? { description: x } : {},
229
- ...E.length > 0 ? { forProperty: E } : {},
230
- ...M.length > 0 ? { locations: M } : {},
231
- ...B.length > 0 ? { depictions: B } : {},
232
- ...T.length > 0 ? { references: T } : {},
233
- ...O.length > 0 ? { functionalities: O } : {},
203
+ id: K,
204
+ ...A ? { description: A } : {},
205
+ ...F.length > 0 ? { forProperty: F } : {},
206
+ ...O.length > 0 ? { locations: O } : {},
207
+ ...T.length > 0 ? { depictions: T } : {},
208
+ ...B.length > 0 ? { references: B } : {},
209
+ ...x.length > 0 ? { functionalities: x } : {},
234
210
  isHostedBy: e["sosa:isHostedBy"] || [],
235
211
  hosts: []
236
212
  };
237
213
  }).filter((e) => (e.id ?? "").length > 0);
238
- w.length > 0 && (r[D(b)] = {
214
+ w.length > 0 && (r[v(y)] = {
239
215
  selected: w
240
216
  });
241
217
  }
242
218
  return r;
243
219
  }
244
- async function ee(n, a) {
245
- const s = await K(n);
220
+ async function ee(n, i) {
221
+ const a = await $(n);
246
222
  return {
247
223
  Landing: {},
248
- ...V(s, { visibility: (a == null ? void 0 : a.visibility) || "public" }),
249
- ...R(s),
250
- ..._(s),
251
- ...$(s),
252
- ...L(s),
224
+ ...U(a, { visibility: (i == null ? void 0 : i.visibility) || "public" }),
225
+ ...R(a),
226
+ ...V(a),
227
+ ...W(a),
228
+ ...X(a),
253
229
  Vorschau: {}
254
230
  };
255
231
  }
256
232
  export {
257
233
  ee as decodeProject,
258
- V as toAuffindbarkeit,
234
+ U as toAuffindbarkeit,
259
235
  R as toGrundlegendeInformationen,
260
- _ as toOptionaleDaten,
261
- $ as toProjektphasen,
262
- L as toTechnicalProcessSteps
236
+ V as toOptionaleDaten,
237
+ W as toProjektphasen,
238
+ X as toTechnicalProcessSteps
263
239
  };