@webtypen/webframez-core 0.2.28 → 0.2.29
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.
|
@@ -37,6 +37,7 @@ export type DataBuilderFieldType = {
|
|
|
37
37
|
export declare class DataBuilder {
|
|
38
38
|
private types;
|
|
39
39
|
private fieldTypes;
|
|
40
|
+
newDataHandler: null | ((req: Request) => Promise<any>);
|
|
40
41
|
getType(key: string): DataBuilderType | null;
|
|
41
42
|
registerType(typeObj: DataBuilderType): this;
|
|
42
43
|
registerFieldType(key: string, options?: any): this;
|
|
@@ -75,6 +76,15 @@ export declare class DataBuilder {
|
|
|
75
76
|
status: string;
|
|
76
77
|
data: any;
|
|
77
78
|
}>;
|
|
79
|
+
detailsNewData(db: any, req: any): Promise<{
|
|
80
|
+
status: string;
|
|
81
|
+
message: string;
|
|
82
|
+
data?: undefined;
|
|
83
|
+
} | {
|
|
84
|
+
status: string;
|
|
85
|
+
data: any;
|
|
86
|
+
message?: undefined;
|
|
87
|
+
} | undefined>;
|
|
78
88
|
apiAutoComplete(req: any): Promise<{
|
|
79
89
|
status: string;
|
|
80
90
|
data: void;
|
|
@@ -19,6 +19,7 @@ class DataBuilder {
|
|
|
19
19
|
constructor() {
|
|
20
20
|
this.types = {};
|
|
21
21
|
this.fieldTypes = {};
|
|
22
|
+
this.newDataHandler = null;
|
|
22
23
|
}
|
|
23
24
|
getType(key) {
|
|
24
25
|
return this.types[key] && this.types[key].key ? this.types[key] : null;
|
|
@@ -177,7 +178,7 @@ class DataBuilder {
|
|
|
177
178
|
loadType(req) {
|
|
178
179
|
return __awaiter(this, void 0, void 0, function* () {
|
|
179
180
|
const type = this.getTypeFromRequest(req);
|
|
180
|
-
const data = Object.assign(Object.assign({}, (yield this.typeForFrontend(type, req))), { fieldtypes: this.getFieldTypesFrontend() });
|
|
181
|
+
const data = Object.assign(Object.assign({}, (yield this.typeForFrontend(type, req))), { fieldtypes: this.getFieldTypesFrontend(), new_data_handler: this.newDataHandler !== null ? true : false });
|
|
181
182
|
return {
|
|
182
183
|
status: "success",
|
|
183
184
|
data: Object.assign(Object.assign({}, data), { schema: Object.assign(Object.assign({}, (data.schema ? data.schema : {})), { fields: yield this.getFieldsFrontend(type.schema
|
|
@@ -425,6 +426,31 @@ class DataBuilder {
|
|
|
425
426
|
};
|
|
426
427
|
});
|
|
427
428
|
}
|
|
429
|
+
detailsNewData(db, req) {
|
|
430
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
431
|
+
if (!this.newDataHandler) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
const type = this.getTypeFromRequest(req);
|
|
435
|
+
if (!type || !type.schema || !type.schema.fields) {
|
|
436
|
+
throw new Error("Missing schema fields ...");
|
|
437
|
+
}
|
|
438
|
+
let data = null;
|
|
439
|
+
try {
|
|
440
|
+
data = yield this.newDataHandler(req);
|
|
441
|
+
}
|
|
442
|
+
catch (e) {
|
|
443
|
+
console.error(e);
|
|
444
|
+
}
|
|
445
|
+
if (data === null || data === undefined) {
|
|
446
|
+
return { status: "error", message: "Unexpected error generating the forms 'new-data' ..." };
|
|
447
|
+
}
|
|
448
|
+
return {
|
|
449
|
+
status: "success",
|
|
450
|
+
data: data,
|
|
451
|
+
};
|
|
452
|
+
});
|
|
453
|
+
}
|
|
428
454
|
apiAutoComplete(req) {
|
|
429
455
|
return __awaiter(this, void 0, void 0, function* () {
|
|
430
456
|
const type = this.getTypeFromRequest(req);
|
|
@@ -27,6 +27,9 @@ class DataBuilderController extends Controller_1.Controller {
|
|
|
27
27
|
else if (req.body.__builder_rest_api === "details") {
|
|
28
28
|
return res.send(yield this.builder.details(db.client.db(null), req));
|
|
29
29
|
}
|
|
30
|
+
else if (req.body.__builder_rest_api === "details-newdata") {
|
|
31
|
+
return res.send(yield this.builder.detailsNewData(db.client.db(null), req));
|
|
32
|
+
}
|
|
30
33
|
else if (req.body.__builder_rest_api === "save") {
|
|
31
34
|
return res.send(yield this.builder.save(db.client.db(null), req));
|
|
32
35
|
}
|
package/package.json
CHANGED
|
@@ -40,6 +40,8 @@ export class DataBuilder {
|
|
|
40
40
|
private types: { [key: string]: DataBuilderType } = {};
|
|
41
41
|
private fieldTypes: { [key: string]: DataBuilderFieldType } = {};
|
|
42
42
|
|
|
43
|
+
newDataHandler: null | ((req: Request) => Promise<any>) = null;
|
|
44
|
+
|
|
43
45
|
getType(key: string) {
|
|
44
46
|
return this.types[key] && this.types[key].key ? this.types[key] : null;
|
|
45
47
|
}
|
|
@@ -223,6 +225,7 @@ export class DataBuilder {
|
|
|
223
225
|
const data = {
|
|
224
226
|
...(await this.typeForFrontend(type, req)),
|
|
225
227
|
fieldtypes: this.getFieldTypesFrontend(),
|
|
228
|
+
new_data_handler: this.newDataHandler !== null ? true : false,
|
|
226
229
|
};
|
|
227
230
|
return {
|
|
228
231
|
status: "success",
|
|
@@ -513,6 +516,33 @@ export class DataBuilder {
|
|
|
513
516
|
};
|
|
514
517
|
}
|
|
515
518
|
|
|
519
|
+
async detailsNewData(db: any, req: any) {
|
|
520
|
+
if (!this.newDataHandler) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
const type = this.getTypeFromRequest(req);
|
|
525
|
+
if (!type || !type.schema || !type.schema.fields) {
|
|
526
|
+
throw new Error("Missing schema fields ...");
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
let data: any = null;
|
|
530
|
+
try {
|
|
531
|
+
data = await this.newDataHandler(req);
|
|
532
|
+
} catch (e: any) {
|
|
533
|
+
console.error(e);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
if (data === null || data === undefined) {
|
|
537
|
+
return { status: "error", message: "Unexpected error generating the forms 'new-data' ..." };
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
return {
|
|
541
|
+
status: "success",
|
|
542
|
+
data: data,
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
|
|
516
546
|
async apiAutoComplete(req: any) {
|
|
517
547
|
const type = this.getTypeFromRequest(req);
|
|
518
548
|
const field = req.body.__builder_field ? await this.getField(req, type, req.body.__builder_field) : null;
|
|
@@ -18,6 +18,8 @@ export class DataBuilderController extends Controller {
|
|
|
18
18
|
return res.send(await this.builder.apiAutoComplete(req));
|
|
19
19
|
} else if (req.body.__builder_rest_api === "details") {
|
|
20
20
|
return res.send(await this.builder.details(db.client.db(null), req));
|
|
21
|
+
} else if (req.body.__builder_rest_api === "details-newdata") {
|
|
22
|
+
return res.send(await this.builder.detailsNewData(db.client.db(null), req));
|
|
21
23
|
} else if (req.body.__builder_rest_api === "save") {
|
|
22
24
|
return res.send(await this.builder.save(db.client.db(null), req));
|
|
23
25
|
} else if (req.body.__builder_rest_api === "type") {
|