@simitgroup/simpleapp-generator 1.0.32 → 1.0.33
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/README.md +0 -3
- package/dist/framework.js +2 -1
- package/dist/framework.js.map +1 -1
- package/dist/generate.js +11 -3
- package/dist/generate.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/documentation/designconcept.bpmn +349 -0
- package/documentation/documentation.png +0 -0
- package/documentation/infra.drawio +141 -0
- package/documentation/infra.png +0 -0
- package/documentation/management.drawio +57 -0
- package/documentation/stack.drawio +106 -0
- package/package.json +1 -1
- package/src/framework.ts +2 -1
- package/src/generate.ts +17 -5
- package/src/index.ts +4 -3
- package/templates/basic/controller.eta +5 -5
- package/templates/basic/pageindex.vue.eta +3 -2
- package/templates/basic/service.eta +1 -16
- package/templates/basic/simpleappclient.eta +9 -6
- package/templates/nest/SimpleAppService.eta +25 -0
- package/templates/nuxt/components.menus.vue.eta +25 -4
- package/templates/nuxt/composables.stringHelper.ts.eta +5 -0
- package/templates/nuxt/nuxt.config.ts.eta +1 -1
- package/templates/nuxt/pages.[xorg].index.vue.eta +9 -6
- package/templates/nuxt/pages.index.vue.eta +1 -4
- package/templates/nuxt/plugins.simpleapp.ts.eta +10 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram id="gjMTQHN510nNBZqZnKbp" name="Page-1">
|
|
3
|
+
<mxGraphModel dx="601" dy="439" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="5" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="4">
|
|
8
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
<mxCell id="45" value="app.simbiz.cloud/client1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="5">
|
|
11
|
+
<mxGeometry x="-0.5346" y="-3" relative="1" as="geometry">
|
|
12
|
+
<mxPoint x="34" y="-5" as="offset"/>
|
|
13
|
+
</mxGeometry>
|
|
14
|
+
</mxCell>
|
|
15
|
+
<mxCell id="2" value="client 1" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
16
|
+
<mxGeometry x="40" y="100" width="60" height="60" as="geometry"/>
|
|
17
|
+
</mxCell>
|
|
18
|
+
<mxCell id="6" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="3" target="4">
|
|
19
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
20
|
+
</mxCell>
|
|
21
|
+
<mxCell id="46" value="app.simbiz.cloud/client2" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="6">
|
|
22
|
+
<mxGeometry x="-0.0613" y="1" relative="1" as="geometry">
|
|
23
|
+
<mxPoint as="offset"/>
|
|
24
|
+
</mxGeometry>
|
|
25
|
+
</mxCell>
|
|
26
|
+
<mxCell id="3" value="client 2" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
27
|
+
<mxGeometry x="41" y="180" width="60" height="60" as="geometry"/>
|
|
28
|
+
</mxCell>
|
|
29
|
+
<mxCell id="9" value="openapi" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="4" target="8">
|
|
30
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
31
|
+
</mxCell>
|
|
32
|
+
<mxCell id="4" value="nuxt" style="whiteSpace=wrap;html=1;rounded=0;" vertex="1" parent="1">
|
|
33
|
+
<mxGeometry x="260" y="140" width="70" height="60" as="geometry"/>
|
|
34
|
+
</mxCell>
|
|
35
|
+
<mxCell id="11" value="mongoose" style="edgeStyle=none;html=1;entryX=0;entryY=0.3;entryDx=0;entryDy=0;" edge="1" parent="1" source="8" target="15">
|
|
36
|
+
<mxGeometry relative="1" as="geometry">
|
|
37
|
+
<mxPoint x="590" y="219" as="targetPoint"/>
|
|
38
|
+
</mxGeometry>
|
|
39
|
+
</mxCell>
|
|
40
|
+
<mxCell id="13" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="8" target="12">
|
|
41
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
42
|
+
</mxCell>
|
|
43
|
+
<mxCell id="8" value="nest" style="whiteSpace=wrap;html=1;rounded=0;" vertex="1" parent="1">
|
|
44
|
+
<mxGeometry x="400" y="140" width="120" height="60" as="geometry"/>
|
|
45
|
+
</mxCell>
|
|
46
|
+
<mxCell id="14" style="edgeStyle=none;html=1;" edge="1" parent="1" source="12" target="15">
|
|
47
|
+
<mxGeometry relative="1" as="geometry">
|
|
48
|
+
<mxPoint x="590" y="255" as="targetPoint"/>
|
|
49
|
+
</mxGeometry>
|
|
50
|
+
</mxCell>
|
|
51
|
+
<mxCell id="17" value="mongoose" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="14">
|
|
52
|
+
<mxGeometry x="0.1543" y="-2" relative="1" as="geometry">
|
|
53
|
+
<mxPoint as="offset"/>
|
|
54
|
+
</mxGeometry>
|
|
55
|
+
</mxCell>
|
|
56
|
+
<mxCell id="31" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="12" target="33">
|
|
57
|
+
<mxGeometry relative="1" as="geometry">
|
|
58
|
+
<mxPoint x="440" y="380" as="targetPoint"/>
|
|
59
|
+
</mxGeometry>
|
|
60
|
+
</mxCell>
|
|
61
|
+
<mxCell id="12" value="bpmn-server" style="whiteSpace=wrap;html=1;rounded=0;" vertex="1" parent="1">
|
|
62
|
+
<mxGeometry x="400" y="280" width="120" height="60" as="geometry"/>
|
|
63
|
+
</mxCell>
|
|
64
|
+
<mxCell id="15" value="mongodb" style="shape=datastore;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
65
|
+
<mxGeometry x="610" y="180" width="60" height="80" as="geometry"/>
|
|
66
|
+
</mxCell>
|
|
67
|
+
<mxCell id="32" value="" style="childLayout=tableLayout;recursiveResize=0;shadow=0;fillColor=none;" vertex="1" parent="1">
|
|
68
|
+
<mxGeometry x="340" y="390" width="180" height="140" as="geometry"/>
|
|
69
|
+
</mxCell>
|
|
70
|
+
<mxCell id="33" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;collapsible=0;recursiveResize=0;expand=0;fontStyle=0;fillColor=none;strokeColor=inherit;" vertex="1" parent="32">
|
|
71
|
+
<mxGeometry width="180" height="47" as="geometry"/>
|
|
72
|
+
</mxCell>
|
|
73
|
+
<mxCell id="34" value="mail" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="33">
|
|
74
|
+
<mxGeometry width="60" height="47" as="geometry">
|
|
75
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
76
|
+
</mxGeometry>
|
|
77
|
+
</mxCell>
|
|
78
|
+
<mxCell id="35" value="sms" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="33">
|
|
79
|
+
<mxGeometry x="60" width="60" height="47" as="geometry">
|
|
80
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
81
|
+
</mxGeometry>
|
|
82
|
+
</mxCell>
|
|
83
|
+
<mxCell id="36" value="gsheet" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="33">
|
|
84
|
+
<mxGeometry x="120" width="60" height="47" as="geometry">
|
|
85
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
86
|
+
</mxGeometry>
|
|
87
|
+
</mxCell>
|
|
88
|
+
<mxCell id="37" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;collapsible=0;recursiveResize=0;expand=0;fontStyle=0;fillColor=none;strokeColor=inherit;" vertex="1" parent="32">
|
|
89
|
+
<mxGeometry y="47" width="180" height="46" as="geometry"/>
|
|
90
|
+
</mxCell>
|
|
91
|
+
<mxCell id="38" value="91app" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="37">
|
|
92
|
+
<mxGeometry width="60" height="46" as="geometry">
|
|
93
|
+
<mxRectangle width="60" height="46" as="alternateBounds"/>
|
|
94
|
+
</mxGeometry>
|
|
95
|
+
</mxCell>
|
|
96
|
+
<mxCell id="39" value="revpay" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="37">
|
|
97
|
+
<mxGeometry x="60" width="60" height="46" as="geometry">
|
|
98
|
+
<mxRectangle width="60" height="46" as="alternateBounds"/>
|
|
99
|
+
</mxGeometry>
|
|
100
|
+
</mxCell>
|
|
101
|
+
<mxCell id="40" value="razor" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="37">
|
|
102
|
+
<mxGeometry x="120" width="60" height="46" as="geometry">
|
|
103
|
+
<mxRectangle width="60" height="46" as="alternateBounds"/>
|
|
104
|
+
</mxGeometry>
|
|
105
|
+
</mxCell>
|
|
106
|
+
<mxCell id="41" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;collapsible=0;recursiveResize=0;expand=0;fontStyle=0;fillColor=none;strokeColor=inherit;" vertex="1" parent="32">
|
|
107
|
+
<mxGeometry y="93" width="180" height="47" as="geometry"/>
|
|
108
|
+
</mxCell>
|
|
109
|
+
<mxCell id="42" value="moodle" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="41">
|
|
110
|
+
<mxGeometry width="60" height="47" as="geometry">
|
|
111
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
112
|
+
</mxGeometry>
|
|
113
|
+
</mxCell>
|
|
114
|
+
<mxCell id="43" value="aws" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="41">
|
|
115
|
+
<mxGeometry x="60" width="60" height="47" as="geometry">
|
|
116
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
117
|
+
</mxGeometry>
|
|
118
|
+
</mxCell>
|
|
119
|
+
<mxCell id="44" value="etc" style="connectable=0;recursiveResize=0;strokeColor=inherit;fillColor=none;align=center;whiteSpace=wrap;html=1;" vertex="1" parent="41">
|
|
120
|
+
<mxGeometry x="120" width="60" height="47" as="geometry">
|
|
121
|
+
<mxRectangle width="60" height="47" as="alternateBounds"/>
|
|
122
|
+
</mxGeometry>
|
|
123
|
+
</mxCell>
|
|
124
|
+
<mxCell id="49" style="edgeStyle=none;html=1;entryX=0.124;entryY=1.016;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="47" target="8">
|
|
125
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
126
|
+
</mxCell>
|
|
127
|
+
<mxCell id="51" value="secure" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="49">
|
|
128
|
+
<mxGeometry x="-0.3388" y="1" relative="1" as="geometry">
|
|
129
|
+
<mxPoint y="-1" as="offset"/>
|
|
130
|
+
</mxGeometry>
|
|
131
|
+
</mxCell>
|
|
132
|
+
<mxCell id="50" value="secure" style="edgeStyle=none;html=1;" edge="1" parent="1" source="47" target="4">
|
|
133
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
134
|
+
</mxCell>
|
|
135
|
+
<mxCell id="47" value="keycloak" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
136
|
+
<mxGeometry x="200" y="320" width="120" height="60" as="geometry"/>
|
|
137
|
+
</mxCell>
|
|
138
|
+
</root>
|
|
139
|
+
</mxGraphModel>
|
|
140
|
+
</diagram>
|
|
141
|
+
</mxfile>
|
|
Binary file
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram id="n2v0TTUPoXV0cv3oXsvD" name="Page-1">
|
|
3
|
+
<mxGraphModel dx="493" dy="351" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="2" value="Products" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
8
|
+
<mxGeometry x="50" y="60" width="320" height="250" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
<mxCell id="4" value="Simtrain" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="2">
|
|
11
|
+
<mxGeometry x="30" y="50" width="120" height="60" as="geometry"/>
|
|
12
|
+
</mxCell>
|
|
13
|
+
<mxCell id="5" value="Simbiz" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="2">
|
|
14
|
+
<mxGeometry x="30" y="130" width="120" height="60" as="geometry"/>
|
|
15
|
+
</mxCell>
|
|
16
|
+
<mxCell id="6" value="SimEdu" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="2">
|
|
17
|
+
<mxGeometry x="180" y="50" width="120" height="60" as="geometry"/>
|
|
18
|
+
</mxCell>
|
|
19
|
+
<mxCell id="7" value="Vertical Container" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
20
|
+
<mxGeometry x="390" y="20" width="437" height="330" as="geometry"/>
|
|
21
|
+
</mxCell>
|
|
22
|
+
<mxCell id="8" value="" style="strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.marginRect2;rectMarginTop=32;strokeColor=#666666;gradientColor=none;" vertex="1" parent="7">
|
|
23
|
+
<mxGeometry x="20" y="40" width="417" height="240" as="geometry"/>
|
|
24
|
+
</mxCell>
|
|
25
|
+
<mxCell id="9" value="API" style="strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.rrect;rSize=0;fontSize=17;fontColor=#666666;gradientColor=none;" vertex="1" parent="8">
|
|
26
|
+
<mxGeometry width="60" height="25" relative="1" as="geometry">
|
|
27
|
+
<mxPoint x="10" as="offset"/>
|
|
28
|
+
</mxGeometry>
|
|
29
|
+
</mxCell>
|
|
30
|
+
<mxCell id="10" value="Schema" style="strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.rrect;rSize=0;fontSize=17;fontColor=#ffffff;strokeColor=#008cff;fillColor=#008cff;" vertex="1" parent="8">
|
|
31
|
+
<mxGeometry width="60" height="25" relative="1" as="geometry">
|
|
32
|
+
<mxPoint x="75" as="offset"/>
|
|
33
|
+
</mxGeometry>
|
|
34
|
+
</mxCell>
|
|
35
|
+
<mxCell id="11" value="BPMN" style="strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.rrect;rSize=0;fontSize=17;fontColor=#666666;gradientColor=none;" vertex="1" parent="8">
|
|
36
|
+
<mxGeometry width="60" height="25" relative="1" as="geometry">
|
|
37
|
+
<mxPoint x="140" as="offset"/>
|
|
38
|
+
</mxGeometry>
|
|
39
|
+
</mxCell>
|
|
40
|
+
<mxCell id="12" value="" style="strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.topButton;rSize=5;strokeColor=#008cff;fillColor=#008cff;gradientColor=none;resizeWidth=1;movable=0;deletable=1;" vertex="1" parent="8">
|
|
41
|
+
<mxGeometry width="417" height="7" relative="1" as="geometry">
|
|
42
|
+
<mxPoint y="25" as="offset"/>
|
|
43
|
+
</mxGeometry>
|
|
44
|
+
</mxCell>
|
|
45
|
+
<mxCell id="13" value="invoice" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="8">
|
|
46
|
+
<mxGeometry x="10" y="40" width="80" height="60" as="geometry"/>
|
|
47
|
+
</mxCell>
|
|
48
|
+
<mxCell id="14" value="product" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="8">
|
|
49
|
+
<mxGeometry x="110" y="40" width="80" height="60" as="geometry"/>
|
|
50
|
+
</mxCell>
|
|
51
|
+
<mxCell id="15" value="students" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="8">
|
|
52
|
+
<mxGeometry x="210" y="40" width="80" height="60" as="geometry"/>
|
|
53
|
+
</mxCell>
|
|
54
|
+
</root>
|
|
55
|
+
</mxGraphModel>
|
|
56
|
+
</diagram>
|
|
57
|
+
</mxfile>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram id="g2NRvyCy43iObyQwmQN3" name="Page-1">
|
|
3
|
+
<mxGraphModel dx="1092" dy="595" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="8" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="7">
|
|
8
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
<mxCell id="11" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="10">
|
|
11
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
12
|
+
</mxCell>
|
|
13
|
+
<mxCell id="13" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="12">
|
|
14
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
15
|
+
</mxCell>
|
|
16
|
+
<mxCell id="37" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="36">
|
|
17
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
18
|
+
</mxCell>
|
|
19
|
+
<mxCell id="2" value="npm" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
20
|
+
<mxGeometry x="230" y="40" width="110" height="30" as="geometry"/>
|
|
21
|
+
</mxCell>
|
|
22
|
+
<mxCell id="4" value="Nuxt Frontend" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
23
|
+
<mxGeometry x="80" y="140" width="200" height="200" as="geometry"/>
|
|
24
|
+
</mxCell>
|
|
25
|
+
<mxCell id="7" value="simpleapp-vue-component" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="4">
|
|
26
|
+
<mxGeometry x="30" y="40" width="110" height="30" as="geometry"/>
|
|
27
|
+
</mxCell>
|
|
28
|
+
<mxCell id="21" style="edgeStyle=none;html=1;" edge="1" parent="4" source="14" target="19">
|
|
29
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
30
|
+
</mxCell>
|
|
31
|
+
<mxCell id="14" value="pages &amp; client libs" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="4">
|
|
32
|
+
<mxGeometry x="40" y="90" width="110" height="30" as="geometry"/>
|
|
33
|
+
</mxCell>
|
|
34
|
+
<mxCell id="19" value="api-client" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="4">
|
|
35
|
+
<mxGeometry x="40" y="150" width="75" height="35" as="geometry"/>
|
|
36
|
+
</mxCell>
|
|
37
|
+
<mxCell id="5" value="Nest Backend" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
38
|
+
<mxGeometry x="310" y="140" width="200" height="200" as="geometry"/>
|
|
39
|
+
</mxCell>
|
|
40
|
+
<mxCell id="23" value="mongoose-schema" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="5">
|
|
41
|
+
<mxGeometry x="40" y="155" width="110" height="30" as="geometry"/>
|
|
42
|
+
</mxCell>
|
|
43
|
+
<mxCell id="24" value="doc-service" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="5">
|
|
44
|
+
<mxGeometry x="40" y="125" width="110" height="30" as="geometry"/>
|
|
45
|
+
</mxCell>
|
|
46
|
+
<mxCell id="25" value="api-countroller" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="5">
|
|
47
|
+
<mxGeometry x="40" y="95" width="110" height="30" as="geometry"/>
|
|
48
|
+
</mxCell>
|
|
49
|
+
<mxCell id="36" value="backend-libs" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="5">
|
|
50
|
+
<mxGeometry x="40" y="30" width="110" height="30" as="geometry"/>
|
|
51
|
+
</mxCell>
|
|
52
|
+
<mxCell id="6" value="Nest BPMN" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
53
|
+
<mxGeometry x="530" y="140" width="200" height="200" as="geometry"/>
|
|
54
|
+
</mxCell>
|
|
55
|
+
<mxCell id="10" value="bpmn-server" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="6">
|
|
56
|
+
<mxGeometry x="30" y="40" width="110" height="30" as="geometry"/>
|
|
57
|
+
</mxCell>
|
|
58
|
+
<mxCell id="15" value="" style="edgeStyle=none;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="12" target="4">
|
|
59
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
60
|
+
</mxCell>
|
|
61
|
+
<mxCell id="17" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="12" target="16">
|
|
62
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
63
|
+
</mxCell>
|
|
64
|
+
<mxCell id="26" style="edgeStyle=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="12" target="5">
|
|
65
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
66
|
+
</mxCell>
|
|
67
|
+
<mxCell id="27" style="edgeStyle=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="12" target="6">
|
|
68
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
69
|
+
</mxCell>
|
|
70
|
+
<mxCell id="35" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="12" target="34">
|
|
71
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
72
|
+
</mxCell>
|
|
73
|
+
<mxCell id="12" value="simpleapp-generator" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
74
|
+
<mxGeometry x="250" y="430" width="110" height="30" as="geometry"/>
|
|
75
|
+
</mxCell>
|
|
76
|
+
<mxCell id="20" style="edgeStyle=none;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="16" target="19">
|
|
77
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
78
|
+
</mxCell>
|
|
79
|
+
<mxCell id="16" value="openapi-generator" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
|
|
80
|
+
<mxGeometry x="140" y="380" width="75" height="35" as="geometry"/>
|
|
81
|
+
</mxCell>
|
|
82
|
+
<mxCell id="32" style="edgeStyle=none;html=1;" edge="1" parent="1" source="28" target="12">
|
|
83
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
84
|
+
</mxCell>
|
|
85
|
+
<mxCell id="28" value="jsonschema" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
86
|
+
<mxGeometry x="175" y="550" width="120" height="80" as="geometry"/>
|
|
87
|
+
</mxCell>
|
|
88
|
+
<mxCell id="31" style="edgeStyle=none;html=1;" edge="1" parent="1" source="29" target="12">
|
|
89
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
90
|
+
</mxCell>
|
|
91
|
+
<mxCell id="29" value="bpmn" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
92
|
+
<mxGeometry x="340" y="550" width="120" height="80" as="geometry"/>
|
|
93
|
+
</mxCell>
|
|
94
|
+
<mxCell id="33" style="edgeStyle=none;html=1;entryX=0.916;entryY=1.003;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="30" target="12">
|
|
95
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
96
|
+
</mxCell>
|
|
97
|
+
<mxCell id="30" value="UI Design (One day)" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
98
|
+
<mxGeometry x="490" y="550" width="120" height="80" as="geometry"/>
|
|
99
|
+
</mxCell>
|
|
100
|
+
<mxCell id="34" value="mobile app (One day)" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
|
|
101
|
+
<mxGeometry x="600" y="415" width="120" height="60" as="geometry"/>
|
|
102
|
+
</mxCell>
|
|
103
|
+
</root>
|
|
104
|
+
</mxGraphModel>
|
|
105
|
+
</diagram>
|
|
106
|
+
</mxfile>
|
package/package.json
CHANGED
package/src/framework.ts
CHANGED
|
@@ -6,7 +6,8 @@ import {Eta} from 'eta';
|
|
|
6
6
|
const log: Logger<ILogObj> = new Logger();
|
|
7
7
|
|
|
8
8
|
let config = {
|
|
9
|
-
"
|
|
9
|
+
"jsonschemaFolder":"./jsonschemaFolder",
|
|
10
|
+
"bpmnFolder":"./bpmn",
|
|
10
11
|
"backendFolder":"./mybackend",
|
|
11
12
|
"backendPort":"8000",
|
|
12
13
|
"mongoConnectStr":'mongodb://<user>:<pass>@<host>:<port>/<db>?authMechanism=DEFAULT',
|
package/src/generate.ts
CHANGED
|
@@ -15,16 +15,22 @@ const path = require('path');
|
|
|
15
15
|
import {mkdirSync, readdir,readFileSync,writeFileSync,existsSync,copyFileSync, readdirSync} from 'fs'
|
|
16
16
|
const { Eta } = require('eta');
|
|
17
17
|
const { capitalizeFirstLetter }= require('./libs');
|
|
18
|
+
const X_DOCUMENT_TYPE='x-document-type'
|
|
19
|
+
const X_DOCUMENT_NAME='x-document-name'
|
|
20
|
+
const X_COLLECTION_NAME='x-collection-name'
|
|
18
21
|
const extFb = '.xfb.json';
|
|
19
22
|
const extHfb = '.xhfb.json';
|
|
20
23
|
const extjsonschema = '.jsonschema.json';
|
|
21
24
|
let jsonschemas = {};
|
|
22
25
|
const docs = [];
|
|
23
26
|
|
|
24
|
-
export const initialize = async (defFolder:string,backendfolder:string,frontendfolder:string,callback:Function) => {
|
|
27
|
+
export const initialize = async (defFolder:string,bpmnFolder:string,backendfolder:string,frontendfolder:string,callback:Function) => {
|
|
25
28
|
prepareEnvironments(backendfolder,frontendfolder)
|
|
26
29
|
let activatemodules:ModuleObject[]=[]
|
|
27
30
|
//
|
|
31
|
+
/*
|
|
32
|
+
load available bpmn into array
|
|
33
|
+
*/
|
|
28
34
|
const files = readdirSync(defFolder)
|
|
29
35
|
// log.warn("all schemas:",files)
|
|
30
36
|
// readdir(defFolder, (err, files) => {
|
|
@@ -34,19 +40,21 @@ export const initialize = async (defFolder:string,backendfolder:string,frontend
|
|
|
34
40
|
log.info(`Load `+clc.green(file))
|
|
35
41
|
const filearr = file.split('.');
|
|
36
42
|
let rendertype = 'basic';
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
let docname = filearr[0].toLowerCase();
|
|
44
|
+
let doctype = filearr[1].toLowerCase();
|
|
45
|
+
|
|
39
46
|
const jsonstring = readFileSync(defFolder +path.sep+ file, 'utf-8');
|
|
40
47
|
let allmodels: ChildModels = {} as ChildModels;
|
|
41
48
|
|
|
42
49
|
if (file.endsWith(extjsonschema)) {
|
|
43
|
-
const jsondata = JSON.parse(jsonstring);
|
|
50
|
+
const jsondata = JSON.parse(jsonstring);
|
|
44
51
|
rendertype = 'basic';
|
|
45
52
|
jsonschemas[docname] = jsondata;
|
|
53
|
+
|
|
46
54
|
// foreignkeys:
|
|
47
55
|
// tmpforeignkeys:TypeForeignKey
|
|
48
56
|
allmodels = await readJsonSchemaBuilder(doctype, docname, jsondata,foreignkeys);
|
|
49
|
-
|
|
57
|
+
|
|
50
58
|
//foreignkeycatalogues
|
|
51
59
|
// foreignkeys
|
|
52
60
|
generate(docname, doctype, rendertype, allmodels,backendfolder,frontendfolder);
|
|
@@ -312,5 +320,9 @@ const finalize=(modules:ModuleObject[],backendfolder:string,frontendfolder:strin
|
|
|
312
320
|
|
|
313
321
|
const txtMenus = eta.render('./nuxt/composables.getmenus.ts.eta', modules);
|
|
314
322
|
writeFileSync(`${frontendfolder}/composables/getMenus.ts`, txtMenus);
|
|
323
|
+
|
|
324
|
+
const txtStringHelper= eta.render('./nuxt/composables.stringHelper.ts.eta', modules);
|
|
325
|
+
writeFileSync(`${frontendfolder}/composables/stringHelper.ts`, txtStringHelper);
|
|
326
|
+
|
|
315
327
|
|
|
316
328
|
}
|
package/src/index.ts
CHANGED
|
@@ -22,7 +22,7 @@ let version=pj.version
|
|
|
22
22
|
program
|
|
23
23
|
.version(version)
|
|
24
24
|
.description("An simpleapp CLI tool for generate frontend (vuejs) and backend(nestjs) codes")
|
|
25
|
-
.option("-c, --config-file <value>", 'configuration file
|
|
25
|
+
.option("-c, --config-file <value>", 'configuration file')
|
|
26
26
|
.parse(process.argv);
|
|
27
27
|
|
|
28
28
|
let path=''
|
|
@@ -44,7 +44,8 @@ if(!options.configFile){
|
|
|
44
44
|
}
|
|
45
45
|
const configs = require(path)
|
|
46
46
|
console.log("configurations: ",configs)
|
|
47
|
-
const
|
|
47
|
+
const jsonschemaFolder = configs.jsonschemaFolder
|
|
48
|
+
const bpmnFolder = configs.bpmnFolder
|
|
48
49
|
const backendFolder = configs.backendFolder
|
|
49
50
|
const frontendFolder = configs.frontendFolder
|
|
50
51
|
const openapi3Yaml = configs.openapi3Yaml
|
|
@@ -55,7 +56,7 @@ const run = async()=>{
|
|
|
55
56
|
fw.runCreateNest(()=>{
|
|
56
57
|
fw.prepareNest(()=>{
|
|
57
58
|
fw.prepareNuxt(()=>{
|
|
58
|
-
generate.initialize(
|
|
59
|
+
generate.initialize(jsonschemaFolder,bpmnFolder,backendFolder,frontendFolder,()=>{
|
|
59
60
|
fw.prepareOpenApiClient()
|
|
60
61
|
fw.prettyNuxt()
|
|
61
62
|
fw.prettyNest()
|
|
@@ -93,11 +93,11 @@ export class <%= it.typename %>Controller extends SimpleAppController<
|
|
|
93
93
|
|
|
94
94
|
<% for(let i=0;i<it.apiSettings.length;i++){%>
|
|
95
95
|
<% let api = it.apiSettings[i] %>
|
|
96
|
-
<%~ `@${capitalizeFirstLetter(api.method)}('
|
|
97
|
-
@ApiResponse({status: 200,description: '<%=api.description%>'})
|
|
98
|
-
@ApiOperation({ operationId: '
|
|
99
|
-
async
|
|
100
|
-
return await this.service
|
|
96
|
+
<%~ `@${capitalizeFirstLetter(api.method)}('${api.action}')`%>
|
|
97
|
+
@ApiResponse({status: 200,description: '<%=api.description%>',type: () =><%~JSON.stringify(api.returntype)%> })
|
|
98
|
+
@ApiOperation({ operationId: '<%=api.execute%>' })
|
|
99
|
+
async <%=api.execute%>(){
|
|
100
|
+
return await this.service.<%=api.execute%>()
|
|
101
101
|
}
|
|
102
102
|
<%}%>
|
|
103
103
|
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
]
|
|
37
37
|
<%}%>
|
|
38
38
|
<%})%>
|
|
39
|
-
|
|
39
|
+
//end
|
|
40
40
|
</script>
|
|
41
41
|
<template>
|
|
42
42
|
<div>
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
:listColumns="columns">
|
|
47
47
|
|
|
48
48
|
<%Object.keys(it.jsonschema.properties).forEach(function(key) { %>
|
|
49
|
-
|
|
49
|
+
|
|
50
|
+
<% let obj=it.jsonschema.properties[key] %>
|
|
50
51
|
<% if(skipcolumns.indexOf(key)>=0){ %>
|
|
51
52
|
<% } else if(obj.type=='boolean'){ %>
|
|
52
53
|
<SimpleAppCheckbox autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
@@ -35,22 +35,7 @@ export class <%= it.typename %>Service extends SimpleAppService<<%= it.typename
|
|
|
35
35
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<%for(let i=0;i<it.apiSettings.length;i++){%>
|
|
41
|
-
<% let api = it.apiSettings[i] %>
|
|
42
|
-
async exec<%=capitalizeFirstLetter(api.action)%>(id:string){
|
|
43
|
-
<%if(api.bpmn!==undefined){%>
|
|
44
|
-
return await this.executeWorkFlow(id,"<%=api.bpmn%>","<%=api.setDocumentStatus%>")
|
|
45
|
-
<%}else if (api.setDocumentStatus !== undefined){%>
|
|
46
|
-
return await this.setDocumentStatus(id,'<%=api.setDocumentStatus%>')
|
|
47
|
-
<%}else {%>
|
|
48
|
-
return Promise.resolve("unknown action")
|
|
49
|
-
<%}%>
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
<%}%>
|
|
53
|
-
|
|
38
|
+
|
|
54
39
|
/*****************************customized frontend + backend code*****************************************/
|
|
55
40
|
|
|
56
41
|
<%~ it.bothEndCode %>
|
|
@@ -31,7 +31,8 @@ export class <%= it.typename%>Doc extends SimpleAppClient<<%= it.typename%>,<%=
|
|
|
31
31
|
xorg='MC0wLTA' //0-0-0
|
|
32
32
|
}
|
|
33
33
|
const apiconfig = new Configuration({ basePath: `${useRuntimeConfig().public.APP_URL}/api/${xorg}` });
|
|
34
|
-
const
|
|
34
|
+
const { $axios } = useNuxtApp();
|
|
35
|
+
const apiobj = new <%= it.doctype.toUpperCase()%>Api(apiconfig,apiconfig.basePath,$axios)
|
|
35
36
|
super(apiobj,'<%= it.doctype %>','<%=it.name %>')
|
|
36
37
|
this.event=event
|
|
37
38
|
this.listen=listen
|
|
@@ -94,22 +95,24 @@ export class <%= it.typename%>Doc extends SimpleAppClient<<%= it.typename%>,<%=
|
|
|
94
95
|
<%}%>
|
|
95
96
|
<%})%>
|
|
96
97
|
|
|
98
|
+
/*****************************x-document-api code*****************************************/
|
|
97
99
|
|
|
98
100
|
<%for(let i=0;i<it.apiSettings.length;i++){%>
|
|
99
101
|
<% let api = it.apiSettings[i] %>
|
|
100
|
-
async
|
|
101
|
-
const recordid: string = this.data.value._id ?? '';
|
|
102
|
-
return await this.docapi
|
|
102
|
+
async <%=api.execute%>(){
|
|
103
|
+
//const recordid: string = this.data.value._id ?? '';
|
|
104
|
+
return await this.docapi.<%=api.execute%>()
|
|
103
105
|
.then((res: AxiosResponse) => {
|
|
104
|
-
if(this.event){this.event('info:<%=
|
|
106
|
+
if(this.event){this.event('info:<%=api.execute%>',res.data)}
|
|
105
107
|
return res;
|
|
106
108
|
}).catch((res:any)=>{
|
|
107
|
-
if(this.event){this.event('error:<%=
|
|
109
|
+
if(this.event){this.event('error:<%=api.execute%>',res)}
|
|
108
110
|
return Promise.reject(res)
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
113
|
<%}%>
|
|
112
114
|
|
|
115
|
+
|
|
113
116
|
/*****************************customized frontend + backend code*****************************************/
|
|
114
117
|
|
|
115
118
|
<%~ it.bothEndCode %>
|
|
@@ -363,4 +363,29 @@ export class SimpleAppService<T extends { _id?: string }> {
|
|
|
363
363
|
async getMyUserTask() {
|
|
364
364
|
return Workflow.getInstance().getMyUserTask();
|
|
365
365
|
}
|
|
366
|
+
|
|
367
|
+
//hardcoded tenant service, temporary no place can park since initial project totally empty
|
|
368
|
+
async getMyTenants() {
|
|
369
|
+
const filter = {
|
|
370
|
+
$or: [
|
|
371
|
+
{ 'owner.ssoId': UserProvider.getInstance().getUid() },
|
|
372
|
+
{ 'users.user.ssoId': UserProvider.getInstance().getUid() },
|
|
373
|
+
],
|
|
374
|
+
};
|
|
375
|
+
let data = await this.search(filter);
|
|
376
|
+
let res = [];
|
|
377
|
+
const { encodeText } = require('@darkwolf/base64url');
|
|
378
|
+
for (let i = 0; i < data.length; i++) {
|
|
379
|
+
const t = data[i];
|
|
380
|
+
const tmp = {
|
|
381
|
+
tenantId: t['tenantId'],
|
|
382
|
+
tenantCode: t['tenantCode'],
|
|
383
|
+
tenantName: t['tenantName'],
|
|
384
|
+
xOrg: encodeText(`${t['tenantId']}-1-1`),
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
res.push(tmp);
|
|
388
|
+
}
|
|
389
|
+
return res;
|
|
390
|
+
}
|
|
366
391
|
}
|
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
// import Menubar from 'primevue/menubar';
|
|
11
11
|
// const route = useRoute()
|
|
12
12
|
// const menus = getMenus(route.params.xorg)
|
|
13
|
+
import MenuIndex from "../pages/[xorg]/index.vue"
|
|
14
|
+
import TenantIndex from "../pages/index.vue"
|
|
15
|
+
import Dialog from 'primevue/dialog';
|
|
16
|
+
import {ref} from 'vue'
|
|
17
|
+
const visible = ref(false)
|
|
18
|
+
const visibletenant = ref(false)
|
|
13
19
|
const logout = async () => {
|
|
14
20
|
const { signOut } = useAuth();
|
|
15
21
|
const { data } = await <any>useFetch('/api/auth/logout');
|
|
@@ -22,14 +28,29 @@ const logout = async () => {
|
|
|
22
28
|
<!-- <header> -->
|
|
23
29
|
<!-- <MegaMenu :model="getMenus()" orientation="horizontal" /> -->
|
|
24
30
|
<div class="bg-white border-b-2 border-b-gray-300 h-10 flex">
|
|
31
|
+
<Dialog v-model:visible="visible" modal header="Pick Document" :autoZIndex="false" :style="{zIndex:100, width: '80vw' }">
|
|
32
|
+
<MenuIndex></MenuIndex>
|
|
33
|
+
</Dialog>
|
|
34
|
+
<Dialog v-model:visible="visibletenant" modal header="Pick Tenant" :autoZIndex="false" :style="{zIndex:100, width: '80vw' }">
|
|
35
|
+
<TenantIndex></TenantIndex>
|
|
36
|
+
</Dialog>
|
|
25
37
|
|
|
26
38
|
<div class="flex-1">
|
|
27
39
|
<NuxtLink to="/"><i class="pi pi-home m-2"></i>Home</NuxtLink>
|
|
28
40
|
</div>
|
|
29
|
-
<div class="flex-1"
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
<div class="flex-1 p-1">
|
|
42
|
+
<A class="text-center cursor-pointer" @click="visible=true"><i class="pi pi-microsoft mr-2"></i>Menu</A>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="flex-1 p-1">
|
|
45
|
+
<A class="text-center cursor-pointer" @click="visibletenant=true"><i class="pi pi-globe mr-2"></i>Switch Tenant</A>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="flex-1 text-right p-1">
|
|
48
|
+
<A class=" cursor-pointer" @click="logout()">
|
|
49
|
+
<i class="pi pi-sign-out mr-2"></i>logout
|
|
50
|
+
</A>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
|
|
33
54
|
</div>
|
|
34
55
|
<!-- </header> -->
|
|
35
56
|
</template>
|