@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.
@@ -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;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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "description": "frontend nuxtjs and backend nests code generator using jsonschema",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
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
- "definationsFolder":"./definations",
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
- const docname = filearr[0].toLowerCase();
38
- const doctype = filearr[1].toLowerCase();
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 content such as:{"definationsFolder":"./definations", "backendFolder":"./nestproject/src/docs", "frontendFolder":"./nuxt/server"}')
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 definationsFolder = configs.definationsFolder
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(definationsFolder,backendFolder,frontendFolder,()=>{
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)}(':id/${api.action}')`%>
97
- @ApiResponse({status: 200,description: '<%=api.description%>'})
98
- @ApiOperation({ operationId: 'exec<%=capitalizeFirstLetter(api.action)%>' })
99
- async exec<%=capitalizeFirstLetter(api.action)%>(@Param('id') id: string){
100
- return await this.service.exec<%=capitalizeFirstLetter(api.action)%>(id)
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
- <% let obj=it.jsonschema.properties[key] %>
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
- /***************************** x-document-api definations *****************************************/
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 apiobj = new <%= it.doctype.toUpperCase()%>Api(apiconfig)
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 exec<%=capitalizeFirstLetter(api.action)%>(){
101
- const recordid: string = this.data.value._id ?? '';
102
- return await this.docapi.exec<%=capitalizeFirstLetter(api.action)%>(recordid)
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:<%=capitalizeFirstLetter(api.action)%>',res.data)}
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:<%=capitalizeFirstLetter(api.action)%>',res)}
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"></div>
30
- <button class="text-right" @click="logout()">
31
- <i class="pi pi-sign-out "></i>logout
32
- </button>
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>
@@ -0,0 +1,5 @@
1
+ export const camelCaseToWords = (s: string) =>{
2
+ const result = s.replace(/([A-Z])/g, ' $1');
3
+ return result.charAt(0).toUpperCase() + result.slice(1);
4
+ }
5
+
@@ -30,7 +30,7 @@ tailwindcss: {
30
30
  security: {
31
31
  //csrf: true, // been force to off csrf cash it crash with nuxt-auth
32
32
  },
33
- ssr: true,
33
+ ssr: false,
34
34
 
35
35
  css: [
36
36
  "primevue/resources/themes/lara-light-blue/theme.css",