@yongdall/standard 0.5.3

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.
@@ -0,0 +1,1604 @@
1
+ import { Where, createField, createModel, now, uuid } from "@yongdall/model";
2
+
3
+ //#region packages/standard/models/Application.mjs
4
+ const UserMenu = createModel("application.userMenu", {
5
+ applicationId: createField("uuid", {
6
+ nullable: false,
7
+ label: "应用",
8
+ primary: 1
9
+ }),
10
+ no: createField("i32", {
11
+ nullable: false,
12
+ default: 0,
13
+ label: "顺序号",
14
+ primary: 2
15
+ }),
16
+ type: createField("string", {
17
+ nullable: false,
18
+ default: "",
19
+ label: "菜单类型",
20
+ renderer: "select",
21
+ source: [{
22
+ value: "",
23
+ label: "菜单"
24
+ }, {
25
+ value: "divider",
26
+ label: "分割线"
27
+ }]
28
+ }),
29
+ level: createField("i16", {
30
+ nullable: false,
31
+ default: 0,
32
+ layout: { hidden: true }
33
+ }),
34
+ label: createField("string", {
35
+ nullable: false,
36
+ default: "新菜单",
37
+ label: "标签"
38
+ }),
39
+ page: createField("text", {
40
+ nullable: false,
41
+ default: "",
42
+ label: "页面",
43
+ renderer: "string"
44
+ }),
45
+ path: createField("text", {
46
+ nullable: false,
47
+ default: "",
48
+ label: "页面路径",
49
+ renderer: "string"
50
+ }),
51
+ uri: createField("text", {
52
+ nullable: false,
53
+ default: "",
54
+ label: "URI",
55
+ renderer: "uri"
56
+ }),
57
+ command: createField("text", {
58
+ nullable: false,
59
+ default: "",
60
+ label: "命令",
61
+ renderer: "string"
62
+ }),
63
+ logged: createField("bool", {
64
+ nullable: false,
65
+ default: false,
66
+ label: "仅登陆用户"
67
+ })
68
+ });
69
+ const NavMenu = createModel("application.menu", {
70
+ applicationId: createField("uuid", {
71
+ nullable: false,
72
+ label: "应用",
73
+ primary: 1
74
+ }),
75
+ no: createField("i32", {
76
+ nullable: false,
77
+ default: 0,
78
+ label: "顺序号",
79
+ primary: 2
80
+ }),
81
+ type: createField("string", {
82
+ nullable: false,
83
+ default: "",
84
+ label: "菜单类型",
85
+ layout: { colSpan: 6 },
86
+ renderer: "select",
87
+ source: [
88
+ {
89
+ value: "",
90
+ label: "菜单"
91
+ },
92
+ {
93
+ value: "button",
94
+ label: "按钮"
95
+ },
96
+ {
97
+ value: "divider",
98
+ label: "分割线"
99
+ }
100
+ ]
101
+ }),
102
+ level: createField("i16", {
103
+ nullable: false,
104
+ default: 0,
105
+ layout: { hidden: true }
106
+ }),
107
+ label: createField("string", {
108
+ nullable: false,
109
+ default: "新菜单",
110
+ label: "标签",
111
+ layout: { colSpan: 6 }
112
+ }),
113
+ icon: createField("string", {
114
+ nullable: false,
115
+ default: "",
116
+ label: "图标",
117
+ layout: { colSpan: 6 }
118
+ }),
119
+ image: createField("text", {
120
+ nullable: false,
121
+ default: "",
122
+ label: "图片",
123
+ layout: { colSpan: 6 },
124
+ renderer: "string"
125
+ }),
126
+ color: createField("string", {
127
+ nullable: false,
128
+ default: "",
129
+ label: "颜色",
130
+ layout: { colSpan: 6 }
131
+ }),
132
+ title: createField("string", {
133
+ nullable: false,
134
+ default: "",
135
+ label: "标题",
136
+ layout: { colSpan: 6 }
137
+ }),
138
+ description: createField("text", {
139
+ nullable: false,
140
+ default: "",
141
+ label: "描述",
142
+ layout: { colSpan: 6 },
143
+ renderer: "string"
144
+ }),
145
+ page: createField("text", {
146
+ nullable: false,
147
+ default: "",
148
+ label: "页面",
149
+ layout: { colSpan: 6 },
150
+ renderer: "string"
151
+ }),
152
+ path: createField("text", {
153
+ nullable: false,
154
+ default: "",
155
+ label: "页面路径",
156
+ layout: { colSpan: 6 },
157
+ renderer: "string"
158
+ }),
159
+ uri: createField("text", {
160
+ nullable: false,
161
+ default: "",
162
+ label: "URI",
163
+ layout: { colSpan: 6 },
164
+ renderer: "uri"
165
+ }),
166
+ command: createField("text", {
167
+ nullable: false,
168
+ default: "",
169
+ label: "命令",
170
+ layout: { colSpan: 6 },
171
+ renderer: "string"
172
+ }),
173
+ permission: createField("text", {
174
+ nullable: false,
175
+ default: "",
176
+ label: "权限",
177
+ renderer: "permission"
178
+ }),
179
+ collapsed: createField("bool", {
180
+ nullable: false,
181
+ default: true,
182
+ label: "默认折叠",
183
+ layout: { colSpan: 6 }
184
+ })
185
+ });
186
+ const ApplicationPage = createModel("application.page", {
187
+ applicationId: createField("uuid", {
188
+ nullable: false,
189
+ label: "应用",
190
+ primary: 1
191
+ }),
192
+ type: createField("string", {
193
+ size: 50,
194
+ nullable: false,
195
+ label: "页面类型",
196
+ immutable: true,
197
+ primary: 2,
198
+ renderer: "select",
199
+ source: [
200
+ {
201
+ value: "model",
202
+ label: "文档主页面"
203
+ },
204
+ {
205
+ value: "modelDetails",
206
+ label: "文档详情页面"
207
+ },
208
+ {
209
+ value: "modelEdit",
210
+ label: "文档编辑页面"
211
+ },
212
+ {
213
+ value: "modelInput",
214
+ label: "文档创建页面"
215
+ },
216
+ {
217
+ value: "modelCopy",
218
+ label: "文档复制页面"
219
+ },
220
+ {
221
+ value: "user",
222
+ label: "用户主页面"
223
+ },
224
+ {
225
+ value: "userDetails",
226
+ label: "用户详情页面"
227
+ },
228
+ {
229
+ value: "userEdit",
230
+ label: "用户编辑页面"
231
+ },
232
+ {
233
+ value: "userInput",
234
+ label: "用户创建页面"
235
+ },
236
+ {
237
+ value: "userCopy",
238
+ label: "用户复制页面"
239
+ },
240
+ {
241
+ value: "organization",
242
+ label: "组织主页面"
243
+ },
244
+ {
245
+ value: "organizationDetails",
246
+ label: "组织详情页面"
247
+ },
248
+ {
249
+ value: "organizationEdit",
250
+ label: "组织编辑页面"
251
+ },
252
+ {
253
+ value: "organizationInput",
254
+ label: "组织创建页面"
255
+ },
256
+ {
257
+ value: "organizationCopy",
258
+ label: "组织复制页面"
259
+ },
260
+ {
261
+ value: "workspace",
262
+ label: "工作区主页面"
263
+ },
264
+ {
265
+ value: "workspaceDetails",
266
+ label: "工作区详情页面"
267
+ },
268
+ {
269
+ value: "workspaceEdit",
270
+ label: "工作区编辑页面"
271
+ },
272
+ {
273
+ value: "workspaceInput",
274
+ label: "工作区创建页面"
275
+ },
276
+ {
277
+ value: "workspaceCopy",
278
+ label: "工作区复制页面"
279
+ }
280
+ ]
281
+ }),
282
+ widget: createField("text", {
283
+ nullable: false,
284
+ label: "页面",
285
+ renderer: "select",
286
+ source: {
287
+ type: "enumeration",
288
+ name: "page",
289
+ value: "{page}",
290
+ search: "applicationPage=?type"
291
+ }
292
+ }),
293
+ no: createField("i32", {
294
+ nullable: false,
295
+ default: 0,
296
+ label: "顺序号",
297
+ primary: 3
298
+ })
299
+ });
300
+ const ApplicationConfigurationPage = createModel("application.configurationPage", {
301
+ applicationId: createField("uuid", {
302
+ nullable: false,
303
+ label: "应用",
304
+ primary: 1
305
+ }),
306
+ type: createField("string", {
307
+ size: 50,
308
+ nullable: false,
309
+ label: "页面类型",
310
+ immutable: true,
311
+ primary: 2
312
+ }),
313
+ widget: createField("text", {
314
+ nullable: false,
315
+ label: "页面",
316
+ renderer: "select",
317
+ source: {
318
+ type: "enumeration",
319
+ name: "page",
320
+ value: "{page}",
321
+ search: "applicationPage=configuration"
322
+ }
323
+ }),
324
+ no: createField("i32", {
325
+ nullable: false,
326
+ default: 0,
327
+ label: "顺序号",
328
+ primary: 3
329
+ })
330
+ });
331
+ var Application_default = createModel("application", {
332
+ label: createField("string", {
333
+ nullable: false,
334
+ default: "",
335
+ label: "名称",
336
+ layout: { colSpan: 6 }
337
+ }),
338
+ type: createField("string", {
339
+ nullable: false,
340
+ default: "workbench",
341
+ label: "类型",
342
+ layout: { colSpan: 6 },
343
+ renderer: "select",
344
+ source: [{
345
+ value: "workbench",
346
+ label: "工作台"
347
+ }, {
348
+ value: "authenticator",
349
+ label: "登陆器"
350
+ }]
351
+ }),
352
+ title: createField("string", {
353
+ nullable: false,
354
+ default: "",
355
+ label: "标题",
356
+ layout: { colSpan: 6 }
357
+ }),
358
+ id: createField("uuid", {
359
+ nullable: false,
360
+ default: uuid,
361
+ renderer: "string",
362
+ layout: { colSpan: 6 },
363
+ uncreatable: true,
364
+ primary: 1
365
+ }),
366
+ domain: createField("string", {
367
+ nullable: false,
368
+ default: "",
369
+ label: "域名",
370
+ layout: {
371
+ colSpan: 5,
372
+ colStart: 1
373
+ }
374
+ }),
375
+ port: createField("i32", {
376
+ nullable: false,
377
+ default: 0,
378
+ label: "端口",
379
+ layout: { colSpan: 3 }
380
+ }),
381
+ path: createField("string", {
382
+ nullable: false,
383
+ default: "",
384
+ label: "路径",
385
+ layout: { colSpan: 10 }
386
+ }),
387
+ https: createField("bool", {
388
+ nullable: false,
389
+ default: false,
390
+ label: "HTTPS",
391
+ layout: { colSpan: 2 }
392
+ }),
393
+ default: createField("bool", {
394
+ nullable: false,
395
+ default: false,
396
+ label: "默认",
397
+ layout: { colSpan: 2 }
398
+ }),
399
+ singleDefault: createField("bool", {
400
+ nullable: false,
401
+ default: false,
402
+ label: "单用户默认",
403
+ layout: { colSpan: 2 }
404
+ }),
405
+ authenticator: createField("string", {
406
+ nullable: false,
407
+ default: "",
408
+ label: "登录器",
409
+ layout: { colSpan: 6 },
410
+ renderer: "select",
411
+ source: {
412
+ type: "enumeration",
413
+ name: "authenticator",
414
+ value: "{authenticator}"
415
+ }
416
+ }),
417
+ skin: createField("string", {
418
+ nullable: false,
419
+ default: "",
420
+ label: "皮肤",
421
+ layout: { colSpan: 6 },
422
+ renderer: "select",
423
+ source: {
424
+ type: "enumeration",
425
+ name: "skin",
426
+ value: "{skin}"
427
+ }
428
+ }),
429
+ theme: createField("string", {
430
+ nullable: false,
431
+ default: "",
432
+ label: "主题",
433
+ layout: { colSpan: 6 },
434
+ renderer: "select",
435
+ source: {
436
+ type: "enumeration",
437
+ name: "theme",
438
+ value: "{theme}"
439
+ }
440
+ }),
441
+ userType: createField("string", {
442
+ nullable: false,
443
+ default: "user",
444
+ label: "用户类型",
445
+ renderer: "select",
446
+ source: [{
447
+ value: "user",
448
+ label: "标准用户"
449
+ }, {
450
+ value: "visitor",
451
+ label: "访客用户"
452
+ }],
453
+ layout: { colSpan: 3 }
454
+ }),
455
+ authRequired: createField("bool", {
456
+ nullable: false,
457
+ default: true,
458
+ label: "强制登录",
459
+ layout: { colSpan: 3 }
460
+ }),
461
+ logo: createField("text", {
462
+ nullable: false,
463
+ default: "",
464
+ label: "LOGO",
465
+ renderer: "file",
466
+ layout: {
467
+ colSpan: 6,
468
+ colStart: 1
469
+ }
470
+ }),
471
+ company: createField("string", {
472
+ nullable: false,
473
+ default: "",
474
+ label: "公司",
475
+ layout: { colSpan: 6 }
476
+ }),
477
+ help: createField("text", {
478
+ nullable: true,
479
+ default: "",
480
+ label: "帮助链接",
481
+ renderer: "string",
482
+ layout: { colSpan: 6 }
483
+ }),
484
+ pages: createField(ApplicationPage, {
485
+ array: true,
486
+ constraints: {
487
+ applicationId: { field: "id" },
488
+ no: { noField: true }
489
+ },
490
+ label: "应用页面",
491
+ layout: { columns: [
492
+ { actions: ["add", "remove"] },
493
+ { field: "type" },
494
+ {
495
+ field: "widget",
496
+ placeholder: 1
497
+ }
498
+ ] }
499
+ }),
500
+ configurationPages: createField(ApplicationConfigurationPage, {
501
+ array: true,
502
+ constraints: {
503
+ applicationId: { field: "id" },
504
+ no: { noField: true }
505
+ },
506
+ label: "配置页面",
507
+ layout: { columns: [
508
+ { actions: ["add", "remove"] },
509
+ { field: "type" },
510
+ {
511
+ field: "widget",
512
+ placeholder: 1
513
+ }
514
+ ] }
515
+ }),
516
+ menus: createField(NavMenu, {
517
+ array: true,
518
+ constraints: {
519
+ applicationId: { field: "id" },
520
+ no: { noField: true }
521
+ },
522
+ label: "菜单",
523
+ layout: {
524
+ levelKey: "level",
525
+ columns: [
526
+ { actions: ["collapse", "move"] },
527
+ {
528
+ field: "label",
529
+ placeholder: 1
530
+ },
531
+ { placeholder: 1 },
532
+ { actions: ["add", "remove"] }
533
+ ]
534
+ }
535
+ }),
536
+ userMenus: createField(UserMenu, {
537
+ array: true,
538
+ constraints: {
539
+ applicationId: { field: "id" },
540
+ no: { noField: true }
541
+ },
542
+ label: "用户菜单",
543
+ layout: {
544
+ levelKey: "level",
545
+ columns: [
546
+ { actions: ["collapse", "move"] },
547
+ {
548
+ field: "label",
549
+ placeholder: 1
550
+ },
551
+ { placeholder: 1 },
552
+ { actions: ["add", "remove"] }
553
+ ]
554
+ }
555
+ }),
556
+ description: createField("text", {
557
+ nullable: false,
558
+ default: "",
559
+ label: "描述"
560
+ })
561
+ }, {
562
+ label: "应用",
563
+ labelField: "label",
564
+ permissions: [{
565
+ fields: [
566
+ "id",
567
+ "type",
568
+ "label",
569
+ "company",
570
+ "title",
571
+ "description"
572
+ ],
573
+ authorizations: ["options"]
574
+ }, {
575
+ permission: "system:application",
576
+ fields: "*",
577
+ authorizations: [
578
+ "query",
579
+ "read",
580
+ "create",
581
+ "update",
582
+ "destroy",
583
+ "add",
584
+ "remove"
585
+ ]
586
+ }],
587
+ hooks: {
588
+ async afterCreate(conn, Model, record) {
589
+ /** @type {Record<string, any>} */
590
+ let data = {};
591
+ if (record.default) data.default = false;
592
+ if (record.singleDefault) data.singleDefault = false;
593
+ if (!Object.keys(data)) return;
594
+ await conn.update(Model, data, Where.not({ id: record.id }).and({
595
+ domain: record.domain,
596
+ port: record.port
597
+ }));
598
+ },
599
+ async afterUpdate(conn, Model, record, oldRecord) {
600
+ /** @type {Record<string, any>} */
601
+ let data = {};
602
+ if (record.default && !oldRecord?.default) data.default = false;
603
+ if (record.singleDefault && !oldRecord?.singleDefault) data.singleDefault = false;
604
+ if (!Object.keys(data)) return;
605
+ await conn.update(Model, data, Where.not({ id: record.id }).and({
606
+ domain: record.domain,
607
+ port: record.port
608
+ }));
609
+ }
610
+ }
611
+ });
612
+
613
+ //#endregion
614
+ //#region packages/standard/models/Menu.mjs
615
+ var Menu_default = createModel("menu", {
616
+ id: createField("uuid", {
617
+ nullable: false,
618
+ default: uuid,
619
+ uncreatable: true,
620
+ primary: 1
621
+ }),
622
+ groupType: createField("string", {
623
+ nullable: false,
624
+ default: "",
625
+ label: "分组类型"
626
+ }),
627
+ group: createField("text", {
628
+ nullable: false,
629
+ default: "",
630
+ label: "分组"
631
+ }),
632
+ no: createField("i32", {
633
+ nullable: false,
634
+ default: 0,
635
+ label: "顺序号"
636
+ }),
637
+ type: createField("string", {
638
+ nullable: false,
639
+ default: "",
640
+ label: "菜单类型",
641
+ layout: { colSpan: 6 },
642
+ renderer: "select",
643
+ source: [
644
+ {
645
+ value: "",
646
+ label: "菜单"
647
+ },
648
+ {
649
+ value: "button",
650
+ label: "按钮"
651
+ },
652
+ {
653
+ value: "divider",
654
+ label: "分割线"
655
+ }
656
+ ]
657
+ }),
658
+ level: createField("i16", {
659
+ nullable: false,
660
+ default: 0,
661
+ layout: { hidden: true }
662
+ }),
663
+ label: createField("string", {
664
+ nullable: false,
665
+ default: "新菜单",
666
+ label: "标签",
667
+ layout: { colSpan: 6 }
668
+ }),
669
+ icon: createField("string", {
670
+ nullable: false,
671
+ default: "",
672
+ label: "图标",
673
+ layout: { colSpan: 6 }
674
+ }),
675
+ image: createField("text", {
676
+ nullable: false,
677
+ default: "",
678
+ label: "图片",
679
+ layout: { colSpan: 6 },
680
+ renderer: "string"
681
+ }),
682
+ color: createField("string", {
683
+ nullable: false,
684
+ default: "",
685
+ label: "颜色",
686
+ layout: { colSpan: 6 }
687
+ }),
688
+ title: createField("string", {
689
+ nullable: false,
690
+ default: "",
691
+ label: "标题",
692
+ layout: { colSpan: 6 }
693
+ }),
694
+ description: createField("text", {
695
+ nullable: false,
696
+ default: "",
697
+ label: "描述",
698
+ layout: { colSpan: 6 },
699
+ renderer: "string"
700
+ }),
701
+ page: createField("text", {
702
+ nullable: false,
703
+ default: "",
704
+ label: "页面",
705
+ layout: { colSpan: 6 },
706
+ renderer: "string"
707
+ }),
708
+ path: createField("text", {
709
+ nullable: false,
710
+ default: "",
711
+ label: "页面路径",
712
+ layout: { colSpan: 6 },
713
+ renderer: "string"
714
+ }),
715
+ uri: createField("text", {
716
+ nullable: false,
717
+ default: "",
718
+ label: "URI",
719
+ layout: { colSpan: 6 },
720
+ renderer: "uri"
721
+ }),
722
+ command: createField("text", {
723
+ nullable: false,
724
+ default: "",
725
+ label: "命令",
726
+ layout: { colSpan: 6 },
727
+ renderer: "string"
728
+ }),
729
+ script: createField("text", {
730
+ nullable: false,
731
+ default: "",
732
+ label: "脚本"
733
+ }),
734
+ refType: createField("string", {
735
+ nullable: false,
736
+ default: "",
737
+ label: "引用类型",
738
+ layout: { colSpan: 6 }
739
+ }),
740
+ refId: createField("string", {
741
+ nullable: false,
742
+ default: "",
743
+ label: "引用ID",
744
+ layout: { colSpan: 6 }
745
+ }),
746
+ refMode: createField("string", {
747
+ nullable: false,
748
+ default: "",
749
+ label: "引用模式",
750
+ layout: { colSpan: 6 }
751
+ }),
752
+ permission: createField("text", {
753
+ nullable: false,
754
+ default: "",
755
+ label: "权限",
756
+ renderer: "permission"
757
+ }),
758
+ collapsed: createField("bool", {
759
+ nullable: false,
760
+ default: true,
761
+ label: "默认折叠",
762
+ layout: { colSpan: 6 }
763
+ }),
764
+ autoLogin: createField("bool", {
765
+ nullable: false,
766
+ default: false,
767
+ label: "自动登录",
768
+ layout: { colSpan: 6 }
769
+ }),
770
+ applicationId: createField("string", {
771
+ nullable: false,
772
+ default: "",
773
+ label: "关联应用",
774
+ layout: { colSpan: 6 }
775
+ })
776
+ });
777
+
778
+ //#endregion
779
+ //#region packages/standard/models/Page.mjs
780
+ const PageMenu = createModel("page.menu", {
781
+ pageId: createField("uuid", {
782
+ nullable: false,
783
+ renderer: "document",
784
+ primary: 1
785
+ }),
786
+ no: createField("i16", {
787
+ nullable: false,
788
+ default: 0,
789
+ label: "顺序号",
790
+ primary: 2
791
+ }),
792
+ type: createField("string", {
793
+ nullable: false,
794
+ default: "",
795
+ label: "菜单类型",
796
+ layout: { colSpan: 6 },
797
+ renderer: "select",
798
+ source: [{
799
+ value: "",
800
+ label: "菜单"
801
+ }, {
802
+ value: "divider",
803
+ label: "分割线"
804
+ }]
805
+ }),
806
+ level: createField("i16", {
807
+ nullable: false,
808
+ default: 0,
809
+ layout: { hidden: true }
810
+ }),
811
+ label: createField("string", {
812
+ nullable: false,
813
+ default: "新菜单",
814
+ label: "标签",
815
+ layout: { colSpan: 6 }
816
+ }),
817
+ icon: createField("string", {
818
+ nullable: false,
819
+ default: "",
820
+ label: "图标",
821
+ layout: { colSpan: 6 }
822
+ }),
823
+ color: createField("string", {
824
+ nullable: false,
825
+ default: "",
826
+ label: "颜色",
827
+ layout: { colSpan: 6 }
828
+ }),
829
+ title: createField("string", {
830
+ nullable: false,
831
+ default: "",
832
+ label: "标题",
833
+ layout: { colSpan: 6 }
834
+ }),
835
+ page: createField("text", {
836
+ nullable: false,
837
+ default: "",
838
+ label: "页面",
839
+ layout: { colSpan: 6 },
840
+ renderer: "string"
841
+ }),
842
+ path: createField("text", {
843
+ nullable: false,
844
+ default: "",
845
+ label: "页面路径",
846
+ layout: { colSpan: 6 },
847
+ renderer: "string"
848
+ }),
849
+ uri: createField("text", {
850
+ nullable: false,
851
+ default: "",
852
+ label: "URI",
853
+ layout: { colSpan: 6 },
854
+ renderer: "uri"
855
+ }),
856
+ command: createField("text", {
857
+ nullable: false,
858
+ default: "",
859
+ label: "命令",
860
+ layout: { colSpan: 6 },
861
+ renderer: "string"
862
+ }),
863
+ script: createField("text", {
864
+ nullable: false,
865
+ default: "",
866
+ label: "脚本"
867
+ }),
868
+ permission: createField("text", {
869
+ nullable: false,
870
+ default: "",
871
+ label: "权限",
872
+ renderer: "permission"
873
+ }),
874
+ description: createField("text", {
875
+ nullable: false,
876
+ default: "",
877
+ label: "描述"
878
+ })
879
+ });
880
+ const PageField = createModel("page.field", {
881
+ pageId: createField("uuid", {
882
+ nullable: false,
883
+ renderer: "document",
884
+ primary: 1
885
+ }),
886
+ no: createField("i16", {
887
+ nullable: false,
888
+ primary: 2
889
+ }),
890
+ field: createField("string", {
891
+ nullable: false,
892
+ default: "",
893
+ label: "字段",
894
+ renderer: "select"
895
+ }),
896
+ label: createField("string", {
897
+ nullable: false,
898
+ default: "",
899
+ label: "列名"
900
+ }),
901
+ width: createField("string", {
902
+ nullable: false,
903
+ default: "",
904
+ label: "宽度"
905
+ }),
906
+ align: createField("string", {
907
+ nullable: false,
908
+ default: "",
909
+ label: "对齐方式",
910
+ renderer: "select",
911
+ source: [
912
+ {
913
+ value: "",
914
+ label: "默认"
915
+ },
916
+ {
917
+ value: "left",
918
+ label: "左对齐"
919
+ },
920
+ {
921
+ value: "center",
922
+ label: "居中"
923
+ },
924
+ {
925
+ value: "right",
926
+ label: "右对齐"
927
+ }
928
+ ]
929
+ }),
930
+ enableLink: createField("bool", {
931
+ nullable: false,
932
+ default: false,
933
+ label: "启用连接"
934
+ })
935
+ });
936
+ const PageForm = createModel("page.form", {
937
+ pageId: createField("uuid", {
938
+ nullable: false,
939
+ renderer: "document",
940
+ primary: 1
941
+ }),
942
+ type: createField("string", {
943
+ nullable: false,
944
+ default: "",
945
+ label: "类型",
946
+ layout: { head: 1 },
947
+ primary: 2
948
+ }),
949
+ no: createField("i16", { nullable: false }),
950
+ layoutId: createField("uuid", {
951
+ nullable: false,
952
+ model: "formLayout",
953
+ label: "布局",
954
+ renderer: "document",
955
+ layout: { head: 1 }
956
+ }),
957
+ mode: createField("string", {
958
+ nullable: false,
959
+ default: "",
960
+ label: "模式",
961
+ layout: { head: 1 }
962
+ })
963
+ });
964
+ const PageFilter = createModel("page.filter", {
965
+ pageId: createField("uuid", {
966
+ nullable: false,
967
+ renderer: "document",
968
+ primary: 1
969
+ }),
970
+ no: createField("i16", {
971
+ nullable: false,
972
+ primary: 2
973
+ }),
974
+ field: createField("string", {
975
+ nullable: false,
976
+ default: "",
977
+ label: "字段",
978
+ renderer: "select",
979
+ layout: { head: 1 }
980
+ }),
981
+ operator: createField("string", {
982
+ nullable: false,
983
+ default: "",
984
+ label: "运算符",
985
+ renderer: "select",
986
+ layout: { head: 1 }
987
+ })
988
+ });
989
+ const PageSider = createModel("page.sider", {
990
+ pageId: createField("uuid", {
991
+ nullable: false,
992
+ renderer: "document",
993
+ primary: 1
994
+ }),
995
+ no: createField("i16", {
996
+ nullable: false,
997
+ primary: 2
998
+ }),
999
+ widget: createField("string", {
1000
+ nullable: false,
1001
+ default: "",
1002
+ label: "组件",
1003
+ renderer: "select",
1004
+ source: {
1005
+ type: "enumeration",
1006
+ name: "pageSider",
1007
+ value: "{widget}"
1008
+ }
1009
+ }),
1010
+ options: createField("string", {
1011
+ nullable: false,
1012
+ default: "",
1013
+ label: "选项"
1014
+ })
1015
+ });
1016
+ var Page_default = createModel("page", {
1017
+ applicationId: createField("uuid", {
1018
+ nullable: true,
1019
+ label: "所属应用",
1020
+ renderer: "document",
1021
+ model: "application",
1022
+ layout: { colSpan: 4 }
1023
+ }),
1024
+ model: createField("string", {
1025
+ nullable: false,
1026
+ default: "",
1027
+ label: "模型",
1028
+ layout: { colSpan: 4 }
1029
+ }),
1030
+ organization: createField("string", {
1031
+ nullable: false,
1032
+ default: "",
1033
+ clearable: true,
1034
+ label: "组织",
1035
+ model: "organization",
1036
+ renderer: "document",
1037
+ layout: { colSpan: 4 }
1038
+ }),
1039
+ user: createField("string", {
1040
+ nullable: false,
1041
+ default: "",
1042
+ label: "用户",
1043
+ layout: { colSpan: 4 }
1044
+ }),
1045
+ workspace: createField("string", {
1046
+ nullable: false,
1047
+ default: "",
1048
+ label: "工作区",
1049
+ layout: { colSpan: 4 }
1050
+ }),
1051
+ page: createField("string", {
1052
+ nullable: false,
1053
+ default: "",
1054
+ label: "页面",
1055
+ layout: { colSpan: 4 },
1056
+ renderer: "select",
1057
+ source: [
1058
+ {
1059
+ label: "列表页",
1060
+ value: "main"
1061
+ },
1062
+ {
1063
+ label: "创建页",
1064
+ value: "input"
1065
+ },
1066
+ {
1067
+ label: "编辑页",
1068
+ value: "edit"
1069
+ },
1070
+ {
1071
+ label: "详情页",
1072
+ value: "details"
1073
+ },
1074
+ {
1075
+ label: "复制页",
1076
+ value: "copy"
1077
+ }
1078
+ ]
1079
+ }),
1080
+ widget: createField("string", {
1081
+ nullable: false,
1082
+ default: "",
1083
+ label: "组件",
1084
+ layout: { colSpan: 6 },
1085
+ renderer: "select",
1086
+ source: {
1087
+ type: "enumeration",
1088
+ name: "page",
1089
+ value: "{page}",
1090
+ search: "type=?page"
1091
+ }
1092
+ }),
1093
+ label: createField("string", {
1094
+ nullable: false,
1095
+ default: "",
1096
+ label: "名称",
1097
+ layout: { colSpan: 6 }
1098
+ }),
1099
+ title: createField("string", {
1100
+ nullable: false,
1101
+ default: "",
1102
+ label: "标题",
1103
+ layout: { colSpan: 6 }
1104
+ }),
1105
+ titlePattern: createField("string", {
1106
+ nullable: false,
1107
+ default: "",
1108
+ label: "标题模式",
1109
+ layout: { colSpan: 6 }
1110
+ }),
1111
+ current: createField("bool", {
1112
+ nullable: false,
1113
+ default: false,
1114
+ label: "当前",
1115
+ layout: { colSpan: 6 }
1116
+ }),
1117
+ id: createField("uuid", {
1118
+ nullable: false,
1119
+ default: uuid,
1120
+ uncreatable: true,
1121
+ primary: 1,
1122
+ renderer: "string",
1123
+ layout: { colSpan: 6 }
1124
+ }),
1125
+ url: createField("text", {
1126
+ nullable: false,
1127
+ default: "",
1128
+ label: "自定义页面嵌入",
1129
+ renderer: "string"
1130
+ }),
1131
+ config: createField("json", {
1132
+ nullable: false,
1133
+ default: {},
1134
+ renderer: "configuration",
1135
+ source: {
1136
+ type: "enumeration",
1137
+ name: "page",
1138
+ search: "type=?page&page=?widget"
1139
+ },
1140
+ label: "配置"
1141
+ }),
1142
+ defaultQuery: createField("string", {
1143
+ nullable: false,
1144
+ default: "",
1145
+ label: "默认查询"
1146
+ }),
1147
+ hiddenFilter: createField("string", {
1148
+ nullable: false,
1149
+ default: "",
1150
+ label: "隐藏过滤条件"
1151
+ }),
1152
+ fields: createField(PageField, {
1153
+ array: true,
1154
+ constraints: {
1155
+ pageId: { field: "id" },
1156
+ no: { noField: true }
1157
+ },
1158
+ label: "显示字段",
1159
+ layout: { columns: [
1160
+ { actions: [
1161
+ "add",
1162
+ "move",
1163
+ "remove",
1164
+ "serial"
1165
+ ] },
1166
+ { field: "field" },
1167
+ { field: "label" },
1168
+ { field: "width" },
1169
+ { field: "align" },
1170
+ { field: "enableLink" }
1171
+ ] }
1172
+ }),
1173
+ filters: createField(PageFilter, {
1174
+ array: true,
1175
+ constraints: {
1176
+ pageId: { field: "id" },
1177
+ no: { noField: true }
1178
+ },
1179
+ label: "快速过滤",
1180
+ layout: { columns: [
1181
+ { actions: [
1182
+ "add",
1183
+ "move",
1184
+ "remove",
1185
+ "serial"
1186
+ ] },
1187
+ { field: "field" },
1188
+ { field: "operator" },
1189
+ { field: "not" }
1190
+ ] }
1191
+ }),
1192
+ forms: createField(PageForm, {
1193
+ array: true,
1194
+ constraints: {
1195
+ pageId: { field: "id" },
1196
+ no: { noField: true }
1197
+ },
1198
+ label: "表单配置",
1199
+ layout: { columns: [
1200
+ { actions: [
1201
+ "add",
1202
+ "move",
1203
+ "remove",
1204
+ "serial"
1205
+ ] },
1206
+ { field: "type" },
1207
+ { field: "layoutId" },
1208
+ { field: "mode" }
1209
+ ] }
1210
+ }),
1211
+ menus: createField(PageMenu, {
1212
+ array: true,
1213
+ constraints: {
1214
+ pageId: { field: "id" },
1215
+ no: { noField: true }
1216
+ },
1217
+ label: "菜单配置",
1218
+ layout: {
1219
+ levelKey: "level",
1220
+ columns: [
1221
+ { actions: ["collapse", "move"] },
1222
+ {
1223
+ field: "label",
1224
+ placeholder: 1
1225
+ },
1226
+ { placeholder: 1 },
1227
+ { actions: ["add", "remove"] }
1228
+ ]
1229
+ }
1230
+ }),
1231
+ sides: createField(PageSider, {
1232
+ array: true,
1233
+ constraints: {
1234
+ pageId: { field: "id" },
1235
+ no: { noField: true }
1236
+ },
1237
+ label: "侧边栏",
1238
+ layout: { columns: [{ actions: [
1239
+ "add",
1240
+ "move",
1241
+ "remove",
1242
+ "collapse",
1243
+ "serial"
1244
+ ] }, { field: "widget" }] }
1245
+ }),
1246
+ description: createField("text", {
1247
+ nullable: false,
1248
+ default: "",
1249
+ label: "描述"
1250
+ }),
1251
+ createdAt: createField("timestamp", {
1252
+ nullable: false,
1253
+ creating: now,
1254
+ label: "创建时间"
1255
+ }),
1256
+ updatedAt: createField("timestamp", {
1257
+ nullable: false,
1258
+ updating: now,
1259
+ label: "更新时间"
1260
+ })
1261
+ }, {
1262
+ label: "页面",
1263
+ labelField: "label",
1264
+ permissions: [{
1265
+ permission: "system:page",
1266
+ fields: "*",
1267
+ authorizations: [
1268
+ "query",
1269
+ "read",
1270
+ "create",
1271
+ "update",
1272
+ "destroy",
1273
+ "add",
1274
+ "remove"
1275
+ ]
1276
+ }],
1277
+ indexes: [{ fields: [
1278
+ "applicationId",
1279
+ "model",
1280
+ "organization",
1281
+ "user",
1282
+ "workspace",
1283
+ "page",
1284
+ "current"
1285
+ ] }, { fields: [
1286
+ "model",
1287
+ "organization",
1288
+ "user",
1289
+ "workspace",
1290
+ "page",
1291
+ "current"
1292
+ ] }],
1293
+ scripts: ["@yongdall/standard#models.Page"],
1294
+ hooks: {
1295
+ async afterCreate(conn, Model, record) {
1296
+ await conn.update(Model, { current: false }, Where.not({ id: record.id }).and({
1297
+ model: record.model,
1298
+ organization: record.organization,
1299
+ user: record.user,
1300
+ workspace: record.workspace,
1301
+ page: record.page,
1302
+ applicationId: record.applicationId
1303
+ }));
1304
+ },
1305
+ async afterUpdate(conn, Model, record, oldRecord) {
1306
+ if (!record.current || oldRecord?.current) return;
1307
+ await conn.update(Model, { current: false }, Where.not({ id: record.id }).and({
1308
+ model: record.model,
1309
+ organization: record.organization,
1310
+ user: record.user,
1311
+ workspace: record.workspace,
1312
+ page: record.page,
1313
+ applicationId: record.applicationId
1314
+ }));
1315
+ }
1316
+ }
1317
+ });
1318
+
1319
+ //#endregion
1320
+ //#region packages/standard/models/Database.mjs
1321
+ var Database_default = createModel("database", {
1322
+ id: createField("uuid", {
1323
+ nullable: false,
1324
+ default: uuid,
1325
+ renderer: "string",
1326
+ uncreatable: true,
1327
+ primary: 1
1328
+ }),
1329
+ type: createField("string", {
1330
+ nullable: false,
1331
+ immutable: true,
1332
+ label: "类型",
1333
+ renderer: "select",
1334
+ source: {
1335
+ type: "enumeration",
1336
+ name: "connectionType",
1337
+ value: "type"
1338
+ }
1339
+ }),
1340
+ label: createField("string", {
1341
+ nullable: false,
1342
+ default: "",
1343
+ label: "名称"
1344
+ }),
1345
+ name: createField("string", {
1346
+ nullable: false,
1347
+ immutable: true,
1348
+ label: "标识"
1349
+ }),
1350
+ uri: createField("string", {
1351
+ nullable: false,
1352
+ label: "路径"
1353
+ }),
1354
+ createdAt: createField("timestamp", {
1355
+ nullable: false,
1356
+ creating: now,
1357
+ label: "创建时间"
1358
+ }),
1359
+ updatedAt: createField("timestamp", {
1360
+ nullable: false,
1361
+ updating: now,
1362
+ label: "更新时间"
1363
+ })
1364
+ }, {
1365
+ label: "数据库",
1366
+ labelField: "label",
1367
+ indexes: [{
1368
+ fields: ["type", "name"],
1369
+ unique: true
1370
+ }],
1371
+ permissions: [
1372
+ {
1373
+ fields: [
1374
+ "id",
1375
+ "type",
1376
+ "label",
1377
+ "name"
1378
+ ],
1379
+ authorizations: ["options"]
1380
+ },
1381
+ {
1382
+ permission: "system:database",
1383
+ fields: [
1384
+ "id",
1385
+ "type",
1386
+ "label",
1387
+ "name",
1388
+ "createdAt",
1389
+ "updatedAt"
1390
+ ],
1391
+ authorizations: ["query"]
1392
+ },
1393
+ {
1394
+ permission: "system:database",
1395
+ fields: "*",
1396
+ authorizations: [
1397
+ "read",
1398
+ "create",
1399
+ "update",
1400
+ "destroy"
1401
+ ]
1402
+ }
1403
+ ]
1404
+ });
1405
+
1406
+ //#endregion
1407
+ //#region packages/standard/models/FormLayout.mjs
1408
+ var FormLayout_default = createModel("formLayout", {
1409
+ id: createField("uuid", {
1410
+ nullable: false,
1411
+ default: uuid,
1412
+ uncreatable: true,
1413
+ primary: 1
1414
+ }),
1415
+ label: createField("string", {
1416
+ nullable: false,
1417
+ default: "",
1418
+ label: "名称",
1419
+ layout: { colSpan: 6 }
1420
+ }),
1421
+ modelId: createField("string", {
1422
+ nullable: false,
1423
+ default: "",
1424
+ label: "模型",
1425
+ layout: { colSpan: 6 }
1426
+ }),
1427
+ default: createField("bool", {
1428
+ nullable: false,
1429
+ default: false,
1430
+ label: "默认布局"
1431
+ }),
1432
+ type: createField("string", {
1433
+ nullable: false,
1434
+ default: "",
1435
+ label: "类型",
1436
+ layout: { colSpan: 6 },
1437
+ renderer: "select",
1438
+ source: {
1439
+ type: "enumeration",
1440
+ name: "formLayout",
1441
+ value: "{type}"
1442
+ }
1443
+ }),
1444
+ enableLink: createField("bool", {
1445
+ nullable: false,
1446
+ default: true,
1447
+ label: "启用连接",
1448
+ layout: { colSpan: 6 }
1449
+ }),
1450
+ enableLinkEditable: createField("bool", {
1451
+ nullable: false,
1452
+ default: false,
1453
+ label: "启用编辑时连接",
1454
+ layout: { colSpan: 6 }
1455
+ }),
1456
+ layout: createField("json", {
1457
+ nullable: false,
1458
+ default: {},
1459
+ renderer: "configuration",
1460
+ source: {
1461
+ type: "enumeration",
1462
+ name: "formLayout",
1463
+ search: "type=?type"
1464
+ },
1465
+ label: "布局"
1466
+ }),
1467
+ description: createField("text", {
1468
+ nullable: false,
1469
+ default: "",
1470
+ label: "描述"
1471
+ }),
1472
+ createdAt: createField("timestamp", {
1473
+ nullable: false,
1474
+ creating: now,
1475
+ layout: { colSpan: 6 },
1476
+ label: "创建时间"
1477
+ }),
1478
+ updatedAt: createField("timestamp", {
1479
+ nullable: false,
1480
+ updating: now,
1481
+ layout: { colSpan: 6 },
1482
+ label: "更新时间"
1483
+ })
1484
+ }, {
1485
+ label: "表单布局",
1486
+ labelField: "label",
1487
+ permissions: [{
1488
+ fields: [
1489
+ "id",
1490
+ "type",
1491
+ "label",
1492
+ "description"
1493
+ ],
1494
+ authorizations: ["options"]
1495
+ }, {
1496
+ permission: "system:formLayout",
1497
+ fields: "*",
1498
+ authorizations: [
1499
+ "query",
1500
+ "read",
1501
+ "create",
1502
+ "update",
1503
+ "destroy"
1504
+ ]
1505
+ }],
1506
+ hooks: {
1507
+ async afterCreate(conn, Model, record) {
1508
+ await conn.update(Model, { default: false }, Where.not({ id: record.id }).and({ modelId: record.modelId }));
1509
+ },
1510
+ async afterUpdate(conn, Model, record, oldRecord) {
1511
+ if (!record.default || oldRecord?.default) return;
1512
+ await conn.update(Model, { default: false }, Where.not({ id: record.id }).and({ modelId: record.modelId }));
1513
+ }
1514
+ }
1515
+ });
1516
+
1517
+ //#endregion
1518
+ //#region packages/standard/models/Plugin.mjs
1519
+ var Plugin_default = createModel("plugin", {
1520
+ id: createField("uuid", {
1521
+ nullable: false,
1522
+ default: uuid,
1523
+ uncreatable: true,
1524
+ primary: 1
1525
+ }),
1526
+ label: createField("string", {
1527
+ nullable: false,
1528
+ default: "",
1529
+ label: "名称",
1530
+ layout: { colSpan: 6 }
1531
+ }),
1532
+ plugin: createField("string", {
1533
+ nullable: false,
1534
+ default: "",
1535
+ label: "插件",
1536
+ layout: { colSpan: 6 },
1537
+ renderer: "select",
1538
+ source: {
1539
+ type: "enumeration",
1540
+ name: "plugin",
1541
+ value: "plugin",
1542
+ label: "{label}({plugin})"
1543
+ }
1544
+ }),
1545
+ enabled: createField("bool", {
1546
+ nullable: false,
1547
+ default: true,
1548
+ label: "启用",
1549
+ layout: { colSpan: 6 }
1550
+ }),
1551
+ config: createField("json", {
1552
+ nullable: false,
1553
+ default: {},
1554
+ renderer: "configuration",
1555
+ source: {
1556
+ type: "enumeration",
1557
+ name: "plugin",
1558
+ search: "plugin=?plugin"
1559
+ },
1560
+ label: "配置"
1561
+ }),
1562
+ createdAt: createField("timestamp", {
1563
+ nullable: false,
1564
+ creating: now,
1565
+ layout: { colSpan: 6 },
1566
+ label: "创建时间"
1567
+ }),
1568
+ updatedAt: createField("timestamp", {
1569
+ nullable: false,
1570
+ updating: now,
1571
+ layout: { colSpan: 6 },
1572
+ label: "更新时间"
1573
+ })
1574
+ }, {
1575
+ label: "插件配置",
1576
+ labelField: "label",
1577
+ indexes: [{
1578
+ fields: ["plugin"],
1579
+ unique: true
1580
+ }, { fields: ["plugin", "enabled"] }],
1581
+ permissions: [{
1582
+ fields: [
1583
+ "id",
1584
+ "type",
1585
+ "label",
1586
+ "description"
1587
+ ],
1588
+ authorizations: ["options"]
1589
+ }, {
1590
+ permission: "system:plugin",
1591
+ fields: "*",
1592
+ authorizations: [
1593
+ "query",
1594
+ "read",
1595
+ "create",
1596
+ "update",
1597
+ "destroy"
1598
+ ]
1599
+ }]
1600
+ });
1601
+
1602
+ //#endregion
1603
+ export { Menu_default as a, Page_default as i, FormLayout_default as n, Application_default as o, Database_default as r, Plugin_default as t };
1604
+ //# sourceMappingURL=standard-BslAnGqm.mjs.map