@vocollege/app 0.0.133 → 0.0.135
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/global.d.ts +7 -7
- package/dist/interceptor.js +1 -1
- package/dist/modules/Services/I18n/strings.json +30 -0
- package/dist/modules/Services/Vapor/Vapor.js +4 -4
- package/dist/modules/VoApi/GraphClient.d.ts +1 -0
- package/dist/modules/VoApi/GraphClient.js +53 -1
- package/dist/modules/VoApi/VoApi.d.ts +1 -1
- package/dist/modules/VoApi/VoApi.js +1 -1
- package/dist/modules/VoAuth.js +1 -1
- package/dist/modules/VoConfig.d.ts +1 -1
- package/dist/modules/VoDocs/VoDocs.d.ts +1 -1
- package/dist/modules/VoDocs/VoDocs.js +4 -4
- package/dist/modules/VoHelpers.d.ts +4 -4
- package/dist/modules/VoHelpers.js +2 -2
- package/dist/modules/VoRouter.d.ts +1 -1
- package/dist/modules/VoUtils_REMOVE.d.ts +2 -2
- package/package.json +1 -1
- package/src/modules/Services/I18n/strings.json +30 -0
- package/src/modules/VoApi/GraphClient.ts +62 -0
package/dist/global.d.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
export type AuthStorageConfigType = {
|
|
1
|
+
export declare type AuthStorageConfigType = {
|
|
2
2
|
STATE: string;
|
|
3
3
|
VERIFIER: string;
|
|
4
4
|
REFRESH_TOKEN: string;
|
|
5
5
|
ACCESS_TOKEN: string;
|
|
6
6
|
TOKEN_TYPE: string;
|
|
7
7
|
};
|
|
8
|
-
export type AuthConfigType = {
|
|
8
|
+
export declare type AuthConfigType = {
|
|
9
9
|
BASE_URL: string;
|
|
10
10
|
CLIENT_ID?: string;
|
|
11
11
|
LOGIN?: string;
|
|
12
12
|
ENDPOINT?: string;
|
|
13
13
|
STORAGE?: AuthStorageConfigType;
|
|
14
14
|
};
|
|
15
|
-
export type ApiConfigType = {
|
|
15
|
+
export declare type ApiConfigType = {
|
|
16
16
|
BASE_URL: string;
|
|
17
17
|
ENDPOINT?: string;
|
|
18
18
|
GRAPHQL?: string;
|
|
19
19
|
};
|
|
20
|
-
export type AppConfigType = {
|
|
20
|
+
export declare type AppConfigType = {
|
|
21
21
|
BASE_URL: string;
|
|
22
22
|
AUTH?: string;
|
|
23
23
|
HOME?: string;
|
|
24
24
|
LOGIN?: string;
|
|
25
25
|
};
|
|
26
|
-
export type VoAppType = {
|
|
26
|
+
export declare type VoAppType = {
|
|
27
27
|
configure: Function;
|
|
28
28
|
config?: Function;
|
|
29
29
|
auth: any;
|
|
30
30
|
api: any;
|
|
31
31
|
};
|
|
32
|
-
export type VoTokenType = {
|
|
32
|
+
export declare type VoTokenType = {
|
|
33
33
|
access_token: string;
|
|
34
34
|
refresh_token: string;
|
|
35
35
|
};
|
|
36
36
|
export interface GeneralObject {
|
|
37
37
|
[key: string]: any;
|
|
38
38
|
}
|
|
39
|
-
export type TypeNullObject = null | GeneralObject;
|
|
39
|
+
export declare type TypeNullObject = null | GeneralObject;
|
package/dist/interceptor.js
CHANGED
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (
|
|
17
|
+
while (_) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -870,6 +870,36 @@
|
|
|
870
870
|
"certifiedSince": "::college är certifierat sedan ::date"
|
|
871
871
|
}
|
|
872
872
|
},
|
|
873
|
+
"ambassadorCertificate": {
|
|
874
|
+
"label": "Intyg för Vård- och omsorgsambassadör",
|
|
875
|
+
"labels": {
|
|
876
|
+
"ambassadorCertificates": "Intyg för Vård- och omsorgsambassadör",
|
|
877
|
+
"createCertificate": "Skapa intyg"
|
|
878
|
+
},
|
|
879
|
+
"messages": {
|
|
880
|
+
"intro": "",
|
|
881
|
+
"certificateSaved": "Intyget har sparats",
|
|
882
|
+
"certificateDeleted": "Intygt har raderats",
|
|
883
|
+
"certificatesGenerated": "Intygen har genererats"
|
|
884
|
+
},
|
|
885
|
+
"template": {
|
|
886
|
+
"title": "Intyg",
|
|
887
|
+
"subtitle": "Vård- och omsorgsambassadör",
|
|
888
|
+
"text1": "Utbildningen omfattar 2 heldagar och målet är att deltagaren ska kunna",
|
|
889
|
+
"text1a": "vara delaktig i arbetet att attrahera, rekrytera och utveckla befintliga medarbetare samt locka fler till utbildning",
|
|
890
|
+
"text1b": "vara en del av marknadsföring och kommunikation mot olika målgrupper utifrån rätt insats och vid rätt tillfälle",
|
|
891
|
+
"text1c": "vara delaktig i arbetet att lyfta fram och sprida det positiva med att utbilda sig och arbeta inom vård- och omsorgsyrket",
|
|
892
|
+
"text2": "Utbildningsinnehåll",
|
|
893
|
+
"text2a": "Vad är VO-College roll i vård- och omsorgsambassadörsarbetet",
|
|
894
|
+
"text2b": "Vad innebär kompetensförsörjning",
|
|
895
|
+
"text2c": "Vad innebär vård- och omsorgsambassadörsrollen",
|
|
896
|
+
"text2d": "Vad innebär det att vara en del av marknadsföringen av utbildning och yrken inom vård och omsorg",
|
|
897
|
+
"text2e": "Vad innebär presentationsteknik, kommunikation och genomförande av aktivitet",
|
|
898
|
+
"text2f": "Vad innebär etik, normer, värderingar, inkludering och genusperspektiv inom aktuellt området",
|
|
899
|
+
"text2g": "Vad innebär det att följa upp olika insatser",
|
|
900
|
+
"responsible": "Utbildningsansvarig"
|
|
901
|
+
}
|
|
902
|
+
},
|
|
873
903
|
"tutorCertificate": {
|
|
874
904
|
"label": "Handledarintyg",
|
|
875
905
|
"labels": {
|
|
@@ -28,7 +28,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
28
28
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
29
|
function step(op) {
|
|
30
30
|
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
-
while (
|
|
31
|
+
while (_) try {
|
|
32
32
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
33
33
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
34
|
switch (op[0]) {
|
|
@@ -69,10 +69,10 @@ var Vapor = /** @class */ (function () {
|
|
|
69
69
|
/**
|
|
70
70
|
* Store a file in S3 and return its UUID, key, and other information.
|
|
71
71
|
*/
|
|
72
|
-
Vapor.prototype.store = function (
|
|
73
|
-
|
|
72
|
+
Vapor.prototype.store = function (file, options) {
|
|
73
|
+
if (options === void 0) { options = {}; }
|
|
74
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
74
75
|
var response, instance, headers, cancelToken;
|
|
75
|
-
if (options === void 0) { options = {}; }
|
|
76
76
|
return __generator(this, function (_a) {
|
|
77
77
|
switch (_a.label) {
|
|
78
78
|
case 0: return [4 /*yield*/, axios_1.default.post(
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (
|
|
28
|
+
while (_) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -137,12 +137,28 @@ var GraphClient = /** @class */ (function () {
|
|
|
137
137
|
// "field",
|
|
138
138
|
// ],
|
|
139
139
|
// },
|
|
140
|
+
ValidigGeneralSurveyRow: {
|
|
141
|
+
fields: {
|
|
142
|
+
options: {
|
|
143
|
+
read: function (existing) {
|
|
144
|
+
return existing ? JSON.parse(existing) : existing;
|
|
145
|
+
},
|
|
146
|
+
// merge(existing = "", incoming: "") {
|
|
147
|
+
// console.log("existing", existing);
|
|
148
|
+
// console.log("incoming", incoming);
|
|
149
|
+
// // return [...existing, ...incoming];
|
|
150
|
+
// return incoming;
|
|
151
|
+
// },
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
140
155
|
},
|
|
141
156
|
}),
|
|
142
157
|
link: (0, client_1.from)([
|
|
143
158
|
links.errorLink,
|
|
144
159
|
links.authLink,
|
|
145
160
|
links.omitTypenameLink,
|
|
161
|
+
links.transformVariablesLink,
|
|
146
162
|
httpLink,
|
|
147
163
|
]),
|
|
148
164
|
});
|
|
@@ -218,10 +234,46 @@ var GraphClient = /** @class */ (function () {
|
|
|
218
234
|
}
|
|
219
235
|
return forward(operation);
|
|
220
236
|
});
|
|
237
|
+
var transformVariablesLink = new client_1.ApolloLink(function (operation, forward) {
|
|
238
|
+
var operationName = operation.operationName, variables = operation.variables;
|
|
239
|
+
switch (operationName) {
|
|
240
|
+
// Manipulate fields on GeneralSurvey.
|
|
241
|
+
case "CreateGeneralSurvey":
|
|
242
|
+
case "UpdateGeneralSurvey":
|
|
243
|
+
Object.keys(variables.input)
|
|
244
|
+
.filter(function (key) { return Array.isArray(variables.input[key]); })
|
|
245
|
+
.map(function (key) {
|
|
246
|
+
// JSON stringify GeneralSurveyRow.options.
|
|
247
|
+
variables.input[key]
|
|
248
|
+
.filter(function (v) { return v === null || v === void 0 ? void 0 : v.options; })
|
|
249
|
+
.map(function (v) {
|
|
250
|
+
if (v.options) {
|
|
251
|
+
v.options = JSON.stringify(v.options);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
// Traverse the variables and convert objects to JSON strings as needed
|
|
258
|
+
// const transformVariables = (vars) => {
|
|
259
|
+
// if (!vars || typeof vars !== 'object') return vars;
|
|
260
|
+
// return Object.keys(vars).reduce((acc, key) => {
|
|
261
|
+
// const value = vars[key];
|
|
262
|
+
// // Check if the value is an object that needs conversion
|
|
263
|
+
// acc[key] = value && typeof value === 'object' && !(value instanceof Array)
|
|
264
|
+
// ? JSON.stringify(value)
|
|
265
|
+
// : value;
|
|
266
|
+
// return acc;
|
|
267
|
+
// }, {});
|
|
268
|
+
// };
|
|
269
|
+
// operation.variables = transformVariables(variables);
|
|
270
|
+
return forward(operation);
|
|
271
|
+
});
|
|
221
272
|
return {
|
|
222
273
|
errorLink: errorLink,
|
|
223
274
|
authLink: authLink,
|
|
224
275
|
omitTypenameLink: omitTypenameLink,
|
|
276
|
+
transformVariablesLink: transformVariablesLink,
|
|
225
277
|
};
|
|
226
278
|
};
|
|
227
279
|
return GraphClient;
|
|
@@ -6,7 +6,7 @@ declare class VoApi extends VoBase {
|
|
|
6
6
|
init(params?: GeneralObject): void;
|
|
7
7
|
get getGraphqlUrl(): string;
|
|
8
8
|
get getGraphqlSubscriptionUrl(): string;
|
|
9
|
-
getUser(): Promise<import("axios").AxiosResponse<any
|
|
9
|
+
getUser(): Promise<import("axios").AxiosResponse<any>>;
|
|
10
10
|
logout(): Promise<boolean>;
|
|
11
11
|
}
|
|
12
12
|
declare const _default: VoApi;
|
|
@@ -29,7 +29,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
29
29
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
30
|
function step(op) {
|
|
31
31
|
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
-
while (
|
|
32
|
+
while (_) try {
|
|
33
33
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
34
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
35
|
switch (op[0]) {
|
package/dist/modules/VoAuth.js
CHANGED
|
@@ -52,7 +52,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
52
52
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
53
53
|
function step(op) {
|
|
54
54
|
if (f) throw new TypeError("Generator is already executing.");
|
|
55
|
-
while (
|
|
55
|
+
while (_) try {
|
|
56
56
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
57
57
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
58
58
|
switch (op[0]) {
|
|
@@ -3,7 +3,7 @@ declare class VoDocs extends VoBase {
|
|
|
3
3
|
graphqlClient: any;
|
|
4
4
|
init(): void;
|
|
5
5
|
get getGraphqlUrl(): string;
|
|
6
|
-
getTemporaryFileUrl(id: string, publicDownload?: boolean): Promise<import("axios").AxiosResponse<any
|
|
6
|
+
getTemporaryFileUrl(id: string, publicDownload?: boolean): Promise<import("axios").AxiosResponse<any>>;
|
|
7
7
|
}
|
|
8
8
|
declare const _default: VoDocs;
|
|
9
9
|
export default _default;
|
|
@@ -29,7 +29,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
29
29
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
30
|
function step(op) {
|
|
31
31
|
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
-
while (
|
|
32
|
+
while (_) try {
|
|
33
33
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
34
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
35
|
switch (op[0]) {
|
|
@@ -77,10 +77,10 @@ var VoDocs = /** @class */ (function (_super) {
|
|
|
77
77
|
enumerable: false,
|
|
78
78
|
configurable: true
|
|
79
79
|
});
|
|
80
|
-
VoDocs.prototype.getTemporaryFileUrl = function (
|
|
81
|
-
|
|
80
|
+
VoDocs.prototype.getTemporaryFileUrl = function (id, publicDownload) {
|
|
81
|
+
if (publicDownload === void 0) { publicDownload = false; }
|
|
82
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
82
83
|
var currentGroup, endpoint, url;
|
|
83
|
-
if (publicDownload === void 0) { publicDownload = false; }
|
|
84
84
|
return __generator(this, function (_a) {
|
|
85
85
|
try {
|
|
86
86
|
currentGroup = VoGroups_1.default.getCurrent(true);
|
|
@@ -7,7 +7,7 @@ export declare const localStorage: {
|
|
|
7
7
|
get: (key: string) => string | false | null;
|
|
8
8
|
remove: (key: string) => true | undefined;
|
|
9
9
|
};
|
|
10
|
-
type encodeQueryDataType = {
|
|
10
|
+
declare type encodeQueryDataType = {
|
|
11
11
|
[key: string]: any;
|
|
12
12
|
};
|
|
13
13
|
export declare const encodeQueryData: (data: encodeQueryDataType) => string;
|
|
@@ -20,7 +20,7 @@ export declare const regexPatterns: {
|
|
|
20
20
|
personalNumber: RegExp;
|
|
21
21
|
orgnr: RegExp;
|
|
22
22
|
};
|
|
23
|
-
type errorObjectType = {
|
|
23
|
+
declare type errorObjectType = {
|
|
24
24
|
message: string;
|
|
25
25
|
fields?: {
|
|
26
26
|
[key: string]: any;
|
|
@@ -33,8 +33,8 @@ export declare const wrapPromise: (promise: any) => {
|
|
|
33
33
|
read: () => any;
|
|
34
34
|
};
|
|
35
35
|
export declare const downloadFile: (url: string) => void;
|
|
36
|
-
export declare const orderByPosition: (a: any, b: any) =>
|
|
37
|
-
export declare const orderByField: (a: any, b: any, field: string) =>
|
|
36
|
+
export declare const orderByPosition: (a: any, b: any) => 1 | -1 | 0;
|
|
37
|
+
export declare const orderByField: (a: any, b: any, field: string) => 1 | -1 | 0;
|
|
38
38
|
export declare const shortenText: (str: string, limit?: number, stripHtml?: boolean, addEllipsis?: boolean) => string;
|
|
39
39
|
export declare const getImageContact: (item: any, width?: number, height?: number) => string;
|
|
40
40
|
export declare const getImage: (item: any, width: number, height: number, field?: string) => string;
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (
|
|
28
|
+
while (_) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -121,7 +121,7 @@ exports.regexPatterns = {
|
|
|
121
121
|
username: /(^[a-z]{3,})([\.]|[\_]|[\-]|[a-z]|[0-9]?)+$/,
|
|
122
122
|
email: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
|
|
123
123
|
stringNonDigit: /^[^0-9]+$/,
|
|
124
|
-
password: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,
|
|
124
|
+
password: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,
|
|
125
125
|
cleanName: /(^[a-z]{1,})(\w|-?)+$/,
|
|
126
126
|
personalNumber: /^(\d{8})[-]\d{4}$/,
|
|
127
127
|
orgnr: /^(\d{6})[-]\d{4}$/,
|
|
@@ -6,7 +6,7 @@ declare const localStorage: {
|
|
|
6
6
|
get: (key: string) => string | false | null;
|
|
7
7
|
remove: (key: string) => true | undefined;
|
|
8
8
|
};
|
|
9
|
-
type encodeQueryDataType = {
|
|
9
|
+
declare type encodeQueryDataType = {
|
|
10
10
|
[key: string]: any;
|
|
11
11
|
};
|
|
12
12
|
declare const encodeQueryData: (data: encodeQueryDataType) => string;
|
|
@@ -16,7 +16,7 @@ declare const regexPatterns: {
|
|
|
16
16
|
stringNonDigit: RegExp;
|
|
17
17
|
password: RegExp;
|
|
18
18
|
};
|
|
19
|
-
type errorObjectType = {
|
|
19
|
+
declare type errorObjectType = {
|
|
20
20
|
message: string;
|
|
21
21
|
fields?: {
|
|
22
22
|
[key: string]: string;
|
package/package.json
CHANGED
|
@@ -870,6 +870,36 @@
|
|
|
870
870
|
"certifiedSince": "::college är certifierat sedan ::date"
|
|
871
871
|
}
|
|
872
872
|
},
|
|
873
|
+
"ambassadorCertificate": {
|
|
874
|
+
"label": "Intyg för Vård- och omsorgsambassadör",
|
|
875
|
+
"labels": {
|
|
876
|
+
"ambassadorCertificates": "Intyg för Vård- och omsorgsambassadör",
|
|
877
|
+
"createCertificate": "Skapa intyg"
|
|
878
|
+
},
|
|
879
|
+
"messages": {
|
|
880
|
+
"intro": "",
|
|
881
|
+
"certificateSaved": "Intyget har sparats",
|
|
882
|
+
"certificateDeleted": "Intygt har raderats",
|
|
883
|
+
"certificatesGenerated": "Intygen har genererats"
|
|
884
|
+
},
|
|
885
|
+
"template": {
|
|
886
|
+
"title": "Intyg",
|
|
887
|
+
"subtitle": "Vård- och omsorgsambassadör",
|
|
888
|
+
"text1": "Utbildningen omfattar 2 heldagar och målet är att deltagaren ska kunna",
|
|
889
|
+
"text1a": "vara delaktig i arbetet att attrahera, rekrytera och utveckla befintliga medarbetare samt locka fler till utbildning",
|
|
890
|
+
"text1b": "vara en del av marknadsföring och kommunikation mot olika målgrupper utifrån rätt insats och vid rätt tillfälle",
|
|
891
|
+
"text1c": "vara delaktig i arbetet att lyfta fram och sprida det positiva med att utbilda sig och arbeta inom vård- och omsorgsyrket",
|
|
892
|
+
"text2": "Utbildningsinnehåll",
|
|
893
|
+
"text2a": "Vad är VO-College roll i vård- och omsorgsambassadörsarbetet",
|
|
894
|
+
"text2b": "Vad innebär kompetensförsörjning",
|
|
895
|
+
"text2c": "Vad innebär vård- och omsorgsambassadörsrollen",
|
|
896
|
+
"text2d": "Vad innebär det att vara en del av marknadsföringen av utbildning och yrken inom vård och omsorg",
|
|
897
|
+
"text2e": "Vad innebär presentationsteknik, kommunikation och genomförande av aktivitet",
|
|
898
|
+
"text2f": "Vad innebär etik, normer, värderingar, inkludering och genusperspektiv inom aktuellt området",
|
|
899
|
+
"text2g": "Vad innebär det att följa upp olika insatser",
|
|
900
|
+
"responsible": "Utbildningsansvarig"
|
|
901
|
+
}
|
|
902
|
+
},
|
|
873
903
|
"tutorCertificate": {
|
|
874
904
|
"label": "Handledarintyg",
|
|
875
905
|
"labels": {
|
|
@@ -91,12 +91,30 @@ class GraphClient {
|
|
|
91
91
|
// "field",
|
|
92
92
|
// ],
|
|
93
93
|
// },
|
|
94
|
+
|
|
95
|
+
ValidigGeneralSurveyRow: {
|
|
96
|
+
fields: {
|
|
97
|
+
options: {
|
|
98
|
+
read(existing) {
|
|
99
|
+
return existing ? JSON.parse(existing) : existing;
|
|
100
|
+
},
|
|
101
|
+
// merge(existing = "", incoming: "") {
|
|
102
|
+
// console.log("existing", existing);
|
|
103
|
+
// console.log("incoming", incoming);
|
|
104
|
+
|
|
105
|
+
// // return [...existing, ...incoming];
|
|
106
|
+
// return incoming;
|
|
107
|
+
// },
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
94
111
|
},
|
|
95
112
|
}),
|
|
96
113
|
link: from([
|
|
97
114
|
links.errorLink,
|
|
98
115
|
links.authLink,
|
|
99
116
|
links.omitTypenameLink,
|
|
117
|
+
links.transformVariablesLink,
|
|
100
118
|
httpLink,
|
|
101
119
|
]),
|
|
102
120
|
});
|
|
@@ -192,10 +210,54 @@ class GraphClient {
|
|
|
192
210
|
return forward(operation);
|
|
193
211
|
});
|
|
194
212
|
|
|
213
|
+
const transformVariablesLink = new ApolloLink((operation, forward) => {
|
|
214
|
+
const { operationName, variables } = operation;
|
|
215
|
+
|
|
216
|
+
switch (operationName) {
|
|
217
|
+
// Manipulate fields on GeneralSurvey.
|
|
218
|
+
case "CreateGeneralSurvey":
|
|
219
|
+
case "UpdateGeneralSurvey":
|
|
220
|
+
Object.keys(variables.input)
|
|
221
|
+
.filter((key: string) => Array.isArray(variables.input[key]))
|
|
222
|
+
.map((key: string) => {
|
|
223
|
+
// JSON stringify GeneralSurveyRow.options.
|
|
224
|
+
variables.input[key]
|
|
225
|
+
.filter((v: GeneralObject) => v?.options)
|
|
226
|
+
.map((v: GeneralObject) => {
|
|
227
|
+
if (v.options) {
|
|
228
|
+
v.options = JSON.stringify(v.options);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Traverse the variables and convert objects to JSON strings as needed
|
|
236
|
+
// const transformVariables = (vars) => {
|
|
237
|
+
// if (!vars || typeof vars !== 'object') return vars;
|
|
238
|
+
|
|
239
|
+
// return Object.keys(vars).reduce((acc, key) => {
|
|
240
|
+
// const value = vars[key];
|
|
241
|
+
|
|
242
|
+
// // Check if the value is an object that needs conversion
|
|
243
|
+
// acc[key] = value && typeof value === 'object' && !(value instanceof Array)
|
|
244
|
+
// ? JSON.stringify(value)
|
|
245
|
+
// : value;
|
|
246
|
+
|
|
247
|
+
// return acc;
|
|
248
|
+
// }, {});
|
|
249
|
+
// };
|
|
250
|
+
|
|
251
|
+
// operation.variables = transformVariables(variables);
|
|
252
|
+
|
|
253
|
+
return forward(operation);
|
|
254
|
+
});
|
|
255
|
+
|
|
195
256
|
return {
|
|
196
257
|
errorLink,
|
|
197
258
|
authLink,
|
|
198
259
|
omitTypenameLink,
|
|
260
|
+
transformVariablesLink,
|
|
199
261
|
};
|
|
200
262
|
}
|
|
201
263
|
|