@piveau/dpi 0.2.0-alpha.12 → 0.2.0-alpha.14
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.
- package/dist/assets/dpi.css +1 -1
- package/dist/packages/dpi/src/data-provider-interface/DataProviderInterface.vue2.js +48 -47
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/HomeTable.vue.js +74 -71
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ProjectTable.vue.js +4 -94
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ProjectTable.vue2.js +104 -0
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/services/dpiV3_apis.js +1 -1
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Autocomplete/AutocompleteVocab.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Autocomplete/AutocompleteVocab.vue2.js +64 -52
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/BasicInfosStep/ProjectNameStep.vue.js +8 -8
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/DpiModalBase.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/DpiModalBase.vue2.js +1 -1
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Findability/CategoriesStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Findability/CategoriesStep.vue2.js +4 -4
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/OptionalDataStep/OptionalDataStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/OptionalDataStep/OptionalDataStep.vue2.js +21 -21
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/DatasetStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/DatasetStep.vue2.js +73 -71
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/GetResource.vue.js +4 -4
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareForm.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareStep.vue2.js +133 -131
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/SoftwareStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/SoftwareStep.vue2.js +85 -83
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ReviewStep/ReviewStep.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ReviewStep/ReviewStep.vue2.js +4 -4
- package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/TableRowV3.vue.js +179 -133
- package/dist/packages/dpi/src/data-provider-interface/components/DistLicense.vue.js +224 -133
- package/dist/packages/dpi/src/data-provider-interface/components/StepActionsSection.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/components/StepActionsSection.vue2.js +111 -91
- package/dist/packages/dpi/src/data-provider-interface/components/TheCancelConfirmationDialog.vue.js +3 -3
- package/dist/packages/dpi/src/data-provider-interface/components/TheCancelConfirmationDialog.vue2.js +24 -19
- package/dist/packages/dpi/src/data-provider-interface/components/VisibilityPage.vue.js +106 -0
- package/dist/packages/dpi/src/data-provider-interface/components/dev-tools/ProjectDpiDevTools.vue.js +2 -2
- package/dist/packages/dpi/src/data-provider-interface/components/dev-tools/ProjectDpiDevTools.vue2.js +137 -94
- package/dist/packages/dpi/src/data-provider-interface/composables/project-transformer/decodeProject.js +152 -135
- package/dist/packages/dpi/src/data-provider-interface/composables/project-transformer/encodeProject.js +201 -164
- package/dist/packages/dpi/src/data-provider-interface/composables/useDpiContext.js +9 -10
- package/dist/packages/dpi/src/data-provider-interface/composables/useDpiEditMode.js +88 -66
- package/dist/packages/dpi/src/data-provider-interface/composables/useDpiSimpleLoader.js +274 -273
- package/dist/packages/dpi/src/data-provider-interface/composables/useDpiStepper.js +33 -32
- package/dist/packages/dpi/src/data-provider-interface/composables/useDpiUtils.js +18 -9
- package/dist/packages/dpi/src/data-provider-interface/composables/useProjectActions.js +65 -0
- package/dist/packages/dpi/src/data-provider-interface/composables/useTwinbyHome.js +50 -0
- package/dist/packages/dpi/src/data-provider-interface/config/dcatapdeHappyFlow/input-definition.js +4 -0
- package/dist/packages/dpi/src/data-provider-interface/config/dcatapdeHappyFlow/page-content-config.js +1 -1
- package/dist/packages/dpi/src/data-provider-interface/schema/projectLdSchema.js +48 -45
- package/dist/packages/dpi/src/data-provider-interface/views/InputPage.vue.js +276 -251
- package/dist/packages/dpi/src/data-provider-interface/views/InputPageProject.vue.js +386 -397
- package/dist/packages/dpi/src/form/inputDefinitions.js +15 -10
- package/dist/packages/dpi/src/utils/schema/schemaProject.js +210 -0
- package/dist/packages/dpi/src/utils/schema/shared.js +23 -0
- package/package.json +3 -3
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { TabGroup as
|
|
3
|
-
import { PhStar as
|
|
4
|
-
import { useStorage as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
|
|
1
|
+
import { defineComponent as w, useModel as O, ref as f, createBlock as I, openBlock as h, withCtx as o, createElementVNode as n, createVNode as t, unref as l, createTextVNode as v, createElementBlock as g } from "vue";
|
|
2
|
+
import { TabGroup as F, TabList as A, Tab as x, TabPanels as B, TabPanel as D } from "@headlessui/vue";
|
|
3
|
+
import { PhStar as M, PhFloppyDisk as S } from "@phosphor-icons/vue";
|
|
4
|
+
import { useStorage as z } from "@vueuse/core";
|
|
5
|
+
import { useRouter as G } from "vue-router";
|
|
6
|
+
import { decodeProject as U } from "../../composables/project-transformer/decodeProject.js";
|
|
7
|
+
import { encodeProject as R } from "../../composables/project-transformer/encodeProject.js";
|
|
8
|
+
import { useFormValues as q } from "../../composables/useDpiFormValues.js";
|
|
9
|
+
import s from "../../HappyFlowComponents/ui/ButtonV3.vue.js";
|
|
10
|
+
import y from "../../HappyFlowComponents/ui/Card.vue.js";
|
|
11
|
+
import H from "../../HappyFlowComponents/ui/DpiModalBase.vue.js";
|
|
12
|
+
import K from "../../HappyFlowComponents/ui/InputField.vue.js";
|
|
13
|
+
import Y from "../../HappyFlowComponents/ui/ListBox/Listbox.vue.js";
|
|
14
|
+
import Q from "../../HappyFlowComponents/ui/TextAreaV3.vue.js";
|
|
15
|
+
import { fullProject as W } from "./fixtures.js";
|
|
16
|
+
const X = { class: "tab-wrapper" }, Z = { class: "hurry" }, $ = { class: "hurry-actions" }, ee = {
|
|
15
17
|
key: 0,
|
|
16
18
|
class: "hurry-flurry"
|
|
17
|
-
},
|
|
19
|
+
}, te = {
|
|
18
20
|
key: 1,
|
|
19
21
|
class: "hurry-flurry-empty"
|
|
20
|
-
},
|
|
22
|
+
}, oe = { class: "hurry" }, ae = { class: "hurry-actions" }, le = { class: "hurry" }, ne = { class: "hurry-actions" }, re = "dpi:project:snapshots", Oe = /* @__PURE__ */ w({
|
|
21
23
|
__name: "ProjectDpiDevTools",
|
|
22
24
|
props: {
|
|
23
25
|
modelValue: { type: Boolean },
|
|
@@ -28,74 +30,80 @@ const R = { class: "tab-wrapper" }, Y = { class: "hurry" }, q = { class: "hurry-
|
|
|
28
30
|
nonceModifiers: {}
|
|
29
31
|
},
|
|
30
32
|
emits: ["update:modelValue", "update:nonce"],
|
|
31
|
-
setup(
|
|
32
|
-
const
|
|
33
|
-
function
|
|
34
|
-
|
|
33
|
+
setup(V) {
|
|
34
|
+
const k = G(), N = O(V, "modelValue"), b = O(V, "nonce"), { formValues: p } = q(), c = f(""), u = f(""), m = f("");
|
|
35
|
+
function C() {
|
|
36
|
+
b.value++, p.value = W.formValuesFn();
|
|
35
37
|
}
|
|
36
|
-
const d =
|
|
37
|
-
function
|
|
38
|
+
const d = z(re, []), i = f("");
|
|
39
|
+
function J(a) {
|
|
38
40
|
return new Date(a).toLocaleString();
|
|
39
41
|
}
|
|
40
|
-
function
|
|
42
|
+
function L() {
|
|
41
43
|
const a = Date.now(), e = {
|
|
42
44
|
id: String(a),
|
|
43
|
-
name:
|
|
45
|
+
name: J(a),
|
|
44
46
|
createdAt: a,
|
|
45
47
|
// ensure we store a plain JSON object without references
|
|
46
48
|
data: JSON.parse(JSON.stringify(p.value))
|
|
47
49
|
};
|
|
48
|
-
d.value = [...d.value, e],
|
|
50
|
+
d.value = [...d.value, e], i.value = e;
|
|
49
51
|
}
|
|
50
|
-
function
|
|
51
|
-
!
|
|
52
|
+
function P() {
|
|
53
|
+
!i.value || typeof i.value == "string" || (b.value++, p.value = JSON.parse(JSON.stringify(i.value.data)));
|
|
52
54
|
}
|
|
53
|
-
async function
|
|
54
|
-
|
|
55
|
+
async function T() {
|
|
56
|
+
u.value = "";
|
|
55
57
|
try {
|
|
56
|
-
const a = JSON.parse(c.value), e = await
|
|
57
|
-
|
|
58
|
+
const a = JSON.parse(c.value), e = await U(a);
|
|
59
|
+
b.value++, p.value = JSON.parse(JSON.stringify(e));
|
|
58
60
|
} catch (a) {
|
|
59
|
-
|
|
61
|
+
u.value = a instanceof Error ? a.message : "Failed to load JSON-LD";
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
async function
|
|
63
|
-
|
|
64
|
+
async function j() {
|
|
65
|
+
u.value = "";
|
|
64
66
|
try {
|
|
65
|
-
const a =
|
|
67
|
+
const a = R(p.value, { identifier: "TODO" }), e = JSON.stringify(a, null, 2);
|
|
66
68
|
c.value = e;
|
|
67
69
|
} catch (a) {
|
|
68
|
-
|
|
70
|
+
u.value = a instanceof Error ? a.message : "Failed to encode project";
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
73
|
+
function _() {
|
|
74
|
+
m.value && k.push({
|
|
75
|
+
path: "/dpi/project/datasets",
|
|
76
|
+
query: { locale: "de", edit: "true", id: m.value }
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function E() {
|
|
80
|
+
d.value = [], i.value = "";
|
|
73
81
|
}
|
|
74
|
-
return (a, e) => (
|
|
75
|
-
modelValue:
|
|
76
|
-
"onUpdate:modelValue": e[
|
|
82
|
+
return (a, e) => (h(), I(H, {
|
|
83
|
+
modelValue: N.value,
|
|
84
|
+
"onUpdate:modelValue": e[3] || (e[3] = (r) => N.value = r)
|
|
77
85
|
}, {
|
|
78
|
-
header: o(() => e[
|
|
86
|
+
header: o(() => e[4] || (e[4] = [
|
|
79
87
|
n("h4", null, "DPI Tools for Devs", -1)
|
|
80
88
|
])),
|
|
81
89
|
default: o(() => [
|
|
82
|
-
n("div",
|
|
83
|
-
t(l(
|
|
90
|
+
n("div", X, [
|
|
91
|
+
t(l(F), null, {
|
|
84
92
|
default: o(() => [
|
|
85
|
-
t(l(
|
|
93
|
+
t(l(A), { class: "tab-list" }, {
|
|
86
94
|
default: o(() => [
|
|
87
|
-
t(l(
|
|
95
|
+
t(l(x), { as: "template" }, {
|
|
88
96
|
default: o(({ selected: r }) => [
|
|
89
|
-
t(
|
|
97
|
+
t(s, {
|
|
90
98
|
variant: r ? "secondary" : "tertiary",
|
|
91
99
|
"button-text": "Form"
|
|
92
100
|
}, null, 8, ["variant"])
|
|
93
101
|
]),
|
|
94
102
|
_: 1
|
|
95
103
|
}),
|
|
96
|
-
t(l(
|
|
104
|
+
t(l(x), { as: "template" }, {
|
|
97
105
|
default: o(({ selected: r }) => [
|
|
98
|
-
t(
|
|
106
|
+
t(s, {
|
|
99
107
|
variant: r ? "secondary" : "tertiary",
|
|
100
108
|
"button-text": "Edit Mode"
|
|
101
109
|
}, null, 8, ["variant"])
|
|
@@ -105,80 +113,80 @@ const R = { class: "tab-wrapper" }, Y = { class: "hurry" }, q = { class: "hurry-
|
|
|
105
113
|
]),
|
|
106
114
|
_: 1
|
|
107
115
|
}),
|
|
108
|
-
t(l(
|
|
116
|
+
t(l(B), { class: "tab-panels" }, {
|
|
109
117
|
default: o(() => [
|
|
110
|
-
t(l(
|
|
118
|
+
t(l(D), null, {
|
|
111
119
|
default: o(() => [
|
|
112
|
-
e[
|
|
113
|
-
t(
|
|
114
|
-
title: o(() => e[
|
|
115
|
-
|
|
120
|
+
e[10] || (e[10] = n("p", null, "Manage current state of the form data model", -1)),
|
|
121
|
+
t(y, null, {
|
|
122
|
+
title: o(() => e[5] || (e[5] = [
|
|
123
|
+
v(" Presets ", -1)
|
|
116
124
|
])),
|
|
117
125
|
icon: o(() => [
|
|
118
|
-
t(l(
|
|
126
|
+
t(l(M), {
|
|
119
127
|
size: 32,
|
|
120
128
|
color: "#009fe3"
|
|
121
129
|
})
|
|
122
130
|
]),
|
|
123
131
|
default: o(() => [
|
|
124
132
|
n("div", null, [
|
|
125
|
-
t(
|
|
133
|
+
t(s, {
|
|
126
134
|
"icon-start": "Check",
|
|
127
135
|
"button-text": "Autofill inputs and reload DPI",
|
|
128
136
|
variant: "primary",
|
|
129
|
-
onClick:
|
|
137
|
+
onClick: C
|
|
130
138
|
}),
|
|
131
|
-
e[
|
|
139
|
+
e[6] || (e[6] = n("p", { class: "mt-3" }, " Preset contains complete form values ", -1))
|
|
132
140
|
])
|
|
133
141
|
]),
|
|
134
142
|
_: 1
|
|
135
143
|
}),
|
|
136
|
-
t(
|
|
137
|
-
title: o(() => e[
|
|
138
|
-
|
|
144
|
+
t(y, { class: "mt-3" }, {
|
|
145
|
+
title: o(() => e[7] || (e[7] = [
|
|
146
|
+
v(" Snapshots ", -1)
|
|
139
147
|
])),
|
|
140
148
|
icon: o(() => [
|
|
141
|
-
t(l(
|
|
149
|
+
t(l(S), {
|
|
142
150
|
size: 32,
|
|
143
151
|
color: "#009fe3"
|
|
144
152
|
})
|
|
145
153
|
]),
|
|
146
154
|
default: o(() => [
|
|
147
|
-
n("div",
|
|
148
|
-
e[
|
|
149
|
-
n("div",
|
|
150
|
-
t(
|
|
155
|
+
n("div", Z, [
|
|
156
|
+
e[9] || (e[9] = n("p", null, " Snapshots are stored locally in your browser ", -1)),
|
|
157
|
+
n("div", $, [
|
|
158
|
+
t(s, {
|
|
151
159
|
class: "mb-3",
|
|
152
160
|
"icon-start": "plus",
|
|
153
161
|
"button-text": "Save snapshot",
|
|
154
162
|
variant: "secondary",
|
|
155
|
-
onClick:
|
|
163
|
+
onClick: L
|
|
156
164
|
}),
|
|
157
|
-
t(
|
|
165
|
+
t(s, {
|
|
158
166
|
class: "mb-3",
|
|
159
167
|
"icon-start": "trash",
|
|
160
168
|
"button-text": "Clear all snapshots",
|
|
161
169
|
variant: "tertiary",
|
|
162
170
|
disabled: !l(d).length,
|
|
163
|
-
onClick:
|
|
171
|
+
onClick: E
|
|
164
172
|
}, null, 8, ["disabled"])
|
|
165
173
|
]),
|
|
166
|
-
l(d).length ? (
|
|
167
|
-
t(
|
|
168
|
-
modelValue:
|
|
169
|
-
"onUpdate:modelValue": e[0] || (e[0] = (r) =>
|
|
174
|
+
l(d).length ? (h(), g("div", ee, [
|
|
175
|
+
t(Y, {
|
|
176
|
+
modelValue: i.value,
|
|
177
|
+
"onUpdate:modelValue": e[0] || (e[0] = (r) => i.value = r),
|
|
170
178
|
label: "Select snapshot",
|
|
171
179
|
placeholder: "Choose a snapshot",
|
|
172
180
|
options: l(d)
|
|
173
181
|
}, null, 8, ["modelValue", "options"]),
|
|
174
|
-
t(
|
|
182
|
+
t(s, {
|
|
175
183
|
"icon-end": "Check",
|
|
176
184
|
"button-text": "Load snapshot",
|
|
177
185
|
variant: "tertiary",
|
|
178
|
-
disabled: !
|
|
179
|
-
onClick:
|
|
186
|
+
disabled: !i.value,
|
|
187
|
+
onClick: P
|
|
180
188
|
}, null, 8, ["disabled"])
|
|
181
|
-
])) : (
|
|
189
|
+
])) : (h(), g("div", te, e[8] || (e[8] = [
|
|
182
190
|
n("span", { class: "copy-small-regular" }, "No snapshots saved", -1)
|
|
183
191
|
])))
|
|
184
192
|
])
|
|
@@ -187,42 +195,77 @@ const R = { class: "tab-wrapper" }, Y = { class: "hurry" }, q = { class: "hurry-
|
|
|
187
195
|
})
|
|
188
196
|
]),
|
|
189
197
|
_: 1,
|
|
190
|
-
__: [
|
|
198
|
+
__: [10]
|
|
191
199
|
}),
|
|
192
|
-
t(l(
|
|
200
|
+
t(l(D), null, {
|
|
193
201
|
default: o(() => [
|
|
194
|
-
t(
|
|
195
|
-
title: o(() => e[
|
|
196
|
-
|
|
202
|
+
t(y, null, {
|
|
203
|
+
title: o(() => e[11] || (e[11] = [
|
|
204
|
+
v(" Load from JSON-LD ", -1)
|
|
197
205
|
])),
|
|
198
206
|
icon: o(() => [
|
|
199
|
-
t(l(
|
|
207
|
+
t(l(S), {
|
|
200
208
|
size: 32,
|
|
201
209
|
color: "#009fe3"
|
|
202
210
|
})
|
|
203
211
|
]),
|
|
204
212
|
default: o(() => [
|
|
205
|
-
n("div",
|
|
206
|
-
t(
|
|
213
|
+
n("div", oe, [
|
|
214
|
+
t(Q, {
|
|
207
215
|
modelValue: c.value,
|
|
208
216
|
"onUpdate:modelValue": e[1] || (e[1] = (r) => c.value = r),
|
|
209
217
|
label: "JSON-LD",
|
|
210
218
|
placeholder: "Paste a JSON-LD document here (GraphObject or NodeObject)",
|
|
211
|
-
"show-error": !!
|
|
212
|
-
"error-message":
|
|
219
|
+
"show-error": !!u.value,
|
|
220
|
+
"error-message": u.value
|
|
213
221
|
}, null, 8, ["modelValue", "show-error", "error-message"]),
|
|
214
|
-
n("div",
|
|
215
|
-
t(
|
|
222
|
+
n("div", ae, [
|
|
223
|
+
t(s, {
|
|
216
224
|
"button-text": "Generate JSON-LD in textarea",
|
|
217
225
|
variant: "secondary",
|
|
218
|
-
onClick:
|
|
226
|
+
onClick: j
|
|
219
227
|
}),
|
|
220
|
-
t(
|
|
228
|
+
t(s, {
|
|
221
229
|
"icon-end": "Check",
|
|
222
230
|
"button-text": "Load from json-ld",
|
|
223
231
|
variant: "primary",
|
|
224
232
|
disabled: !c.value,
|
|
225
|
-
onClick:
|
|
233
|
+
onClick: T
|
|
234
|
+
}, null, 8, ["disabled"])
|
|
235
|
+
])
|
|
236
|
+
])
|
|
237
|
+
]),
|
|
238
|
+
_: 1
|
|
239
|
+
}),
|
|
240
|
+
t(y, { class: "mt-3" }, {
|
|
241
|
+
title: o(() => e[12] || (e[12] = [
|
|
242
|
+
v(" Edit by ID ", -1)
|
|
243
|
+
])),
|
|
244
|
+
icon: o(() => [
|
|
245
|
+
t(l(S), {
|
|
246
|
+
size: 32,
|
|
247
|
+
color: "#009fe3"
|
|
248
|
+
})
|
|
249
|
+
]),
|
|
250
|
+
default: o(() => [
|
|
251
|
+
n("div", le, [
|
|
252
|
+
t(K, {
|
|
253
|
+
modelValue: m.value,
|
|
254
|
+
"onUpdate:modelValue": e[2] || (e[2] = (r) => m.value = r),
|
|
255
|
+
label: "ID",
|
|
256
|
+
placeholder: "Enter ID to edit",
|
|
257
|
+
"add-on-text": !1,
|
|
258
|
+
"date-picker": !1,
|
|
259
|
+
"info-icon": !1,
|
|
260
|
+
"show-end-icon": !1,
|
|
261
|
+
"pre-icon": !1
|
|
262
|
+
}, null, 8, ["modelValue"]),
|
|
263
|
+
n("div", ne, [
|
|
264
|
+
t(s, {
|
|
265
|
+
"button-text": "Open edit mode",
|
|
266
|
+
variant: "primary",
|
|
267
|
+
disabled: !m.value,
|
|
268
|
+
onClick: _
|
|
226
269
|
}, null, 8, ["disabled"])
|
|
227
270
|
])
|
|
228
271
|
])
|
|
@@ -245,5 +288,5 @@ const R = { class: "tab-wrapper" }, Y = { class: "hurry" }, q = { class: "hurry-
|
|
|
245
288
|
}
|
|
246
289
|
});
|
|
247
290
|
export {
|
|
248
|
-
|
|
291
|
+
Oe as default
|
|
249
292
|
};
|