@simitgroup/simpleapp-generator 1.2.7 → 1.3.0-alpha

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.
Files changed (106) hide show
  1. package/dist/buildinschemas/organization.d.ts.map +1 -1
  2. package/dist/buildinschemas/organization.js +3 -1
  3. package/dist/buildinschemas/organization.js.map +1 -1
  4. package/dist/framework.d.ts.map +1 -1
  5. package/dist/framework.js +4 -9
  6. package/dist/framework.js.map +1 -1
  7. package/dist/generate.js +14 -14
  8. package/dist/generate.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/buildinschemas/organization.ts +3 -1
  11. package/src/framework.ts +5 -9
  12. package/src/generate.ts +17 -16
  13. package/templates/basic/nest/controller.ts.eta +17 -0
  14. package/templates/basic/nest/default.ts.eta +6 -2
  15. package/templates/basic/nuxt/default.ts.eta +10 -6
  16. package/templates/basic/nuxt/pages.[id].vue.eta +9 -7
  17. package/templates/basic/nuxt/pages.form.vue.eta +16 -36
  18. package/templates/basic/nuxt/pages.landing.vue.eta +42 -35
  19. package/templates/basic/nuxt/pages.viewer.vue.eta +4 -6
  20. package/templates/nest/.env._eta +0 -1
  21. package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +14 -2
  22. package/templates/nest/src/simpleapp/generate/controllers/simpleapp.controller.ts.eta +32 -18
  23. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +76 -13
  24. package/templates/nuxt/app.vue.eta +7 -3
  25. package/templates/nuxt/assets/css/calendar.css._eta +21 -8
  26. package/templates/nuxt/assets/css/style.css._eta +17 -10
  27. package/templates/nuxt/assets/primevue/passthrough.ts._eta +44 -22
  28. package/templates/nuxt/components/button/ButtonDefault.vue._eta +1 -2
  29. package/templates/nuxt/components/button/ButtonMultiple.vue._eta +21 -0
  30. package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +29 -8
  31. package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +3 -4
  32. package/templates/nuxt/components/event/EventDocumentViewer.vue._eta +75 -65
  33. package/templates/nuxt/components/event/EventNotification.vue._eta +23 -2
  34. package/templates/nuxt/components/form/FormBranch.vue.eta +83 -0
  35. package/templates/nuxt/components/form/readme.md.eta +1 -0
  36. package/templates/nuxt/components/header/HeaderBar.vue._eta +9 -9
  37. package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +2 -2
  38. package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +16 -22
  39. package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +29 -46
  40. package/templates/nuxt/components/list/ListDocument.vue.eta +25 -0
  41. package/templates/nuxt/components/list/ListDocumentTable.vue.eta +77 -0
  42. package/templates/nuxt/components/list/ListView.vue.eta +129 -58
  43. package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +10 -0
  44. package/templates/nuxt/components/overlay/OverlaySideBarCrud.vue.eta +21 -0
  45. package/templates/nuxt/components/overlay/OverlayViewer.vue.eta +20 -0
  46. package/templates/nuxt/components/page/PageDocList.vue.eta +170 -0
  47. package/templates/nuxt/components/renderer/RendererBoolean.vue.eta +8 -4
  48. package/templates/nuxt/components/renderer/RendererDate.vue.eta +4 -4
  49. package/templates/nuxt/components/renderer/RendererLink.vue.eta +12 -20
  50. package/templates/nuxt/components/renderer/RendererMoney.vue.eta +10 -2
  51. package/templates/nuxt/components/renderer/RendererViewer.vue.eta +27 -21
  52. package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +202 -150
  53. package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +7 -1
  54. package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +112 -101
  55. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +183 -91
  56. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +383 -246
  57. package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +4 -3
  58. package/templates/nuxt/components/table/TableDocuments.vue.eta +3 -3
  59. package/templates/nuxt/components/text/TextDanger.vue._eta +5 -0
  60. package/templates/nuxt/components/text/TextSubtitle.vue._eta +5 -0
  61. package/templates/nuxt/components/text/TextTitle.vue._eta +5 -0
  62. package/templates/nuxt/components/user/UserProfileListItem.vue.eta +2 -2
  63. package/templates/nuxt/composables/date.generate.ts.eta +21 -0
  64. package/templates/nuxt/composables/goTo.generate.ts.eta +1 -0
  65. package/templates/nuxt/composables/stringHelper.generate.ts.eta +0 -5
  66. package/templates/nuxt/error.vue._eta +3 -3
  67. package/templates/nuxt/i18n.config.ts.eta +1 -1
  68. package/templates/nuxt/lang/en.ts.eta +16 -0
  69. package/templates/nuxt/layouts/default.vue._eta +34 -34
  70. package/templates/nuxt/layouts/loginlayout.vue._eta +3 -0
  71. package/templates/nuxt/layouts/mobile.vue._eta +52 -0
  72. package/templates/nuxt/nuxt.config.ts._eta +28 -22
  73. package/templates/nuxt/pages/[xorg]/organization/[id].vue.eta +39 -0
  74. package/templates/nuxt/pages/[xorg]/organization/new.vue.eta +30 -143
  75. package/templates/nuxt/pages/[xorg]/organization/viewer.vue.eta +3 -0
  76. package/templates/nuxt/pages/[xorg]/organization.vue.eta +81 -127
  77. package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +40 -0
  78. package/templates/nuxt/pages/[xorg]/user/form.vue.eta +329 -0
  79. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +37 -0
  80. package/templates/nuxt/pages/[xorg]/{organization/[id]/branches/[bid].vue → user/new.vue.eta} +10 -4
  81. package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +30 -0
  82. package/templates/nuxt/pages/[xorg]/{user.vue._eta → user.vue.eta} +88 -78
  83. package/templates/nuxt/pages/login.vue._eta +34 -0
  84. package/templates/nuxt/pages/profile.vue.eta +12 -3
  85. package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +36 -35
  86. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +6 -0
  87. package/templates/nuxt/server/api/[xorg]/[...].ts.eta +7 -40
  88. package/templates/nuxt/server/api/profile/[...].ts.eta +3 -32
  89. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +42 -3
  90. package/templates/nuxt/types/calendar.ts.eta +8 -1
  91. package/templates/nuxt/types/documentlist.ts.eta +0 -9
  92. package/templates/nuxt/types/events.ts.eta +1 -0
  93. package/templates/nuxt/types/others.ts.eta +4 -1
  94. package/templates/nuxt/types/simpleappinput.ts.eta +12 -2
  95. package/templates/nuxt/types/user.ts.eta +2 -0
  96. package/templates/project/lang/default._json +9 -1
  97. package/tsconfig.tsbuildinfo +1 -1
  98. package/templates/nuxt/components/docPage/DocPageList.vue.eta +0 -125
  99. package/templates/nuxt/lang/en.ts._eta +0 -6
  100. package/templates/nuxt/pages/[xorg]/organization/[bid].vue.eta +0 -14
  101. package/templates/nuxt/pages/[xorg]/organization/[id]/branches/new.vue +0 -149
  102. package/templates/nuxt/pages/[xorg]/organization/[id]/index.vue.eta +0 -1
  103. package/templates/nuxt/pages/[xorg]/user/[id].vue._eta +0 -6
  104. package/templates/nuxt/pages/[xorg]/user/index.vue._eta +0 -302
  105. package/templates/nuxt/pages/login.vue.eta +0 -30
  106. /package/templates/nuxt/lang/{df.ts.eta → df.ts.etaxxxx} +0 -0
@@ -1,302 +0,0 @@
1
- <template>
2
- <div class="grid grid-cols-2">
3
- <Card>
4
- <template #header>
5
- <h1 class="font-bold">{{ usertitle }}</h1>
6
- </template>
7
- <template #content>
8
- <SimpleAppForm :document="userdoc" #default="o">
9
- <div class="flex flex-col gap-2">
10
- <SimpleAppInput
11
- :input-type="SimpleAppInputType.text"
12
- autofocus
13
- :setting="o.getField('#/properties/fullName')"
14
- v-model="userdata.fullName"
15
- />
16
-
17
- <SimpleAppInput
18
- :input-type="SimpleAppInputType.text"
19
- type="email"
20
- :setting="o.getField('#/properties/email')"
21
- v-model="userdata.email"
22
- />
23
-
24
- <SimpleAppInput
25
- :input-type="SimpleAppInputType.checkbox"
26
- :setting="o.getField('#/properties/active')"
27
- v-model="userdata.active"
28
- />
29
- <SimpleAppInput
30
- :input-type="SimpleAppInputType.textarea"
31
- :setting="o.getField('#/properties/description')"
32
- v-model="userdata.description"
33
- />
34
- <div>
35
- <Button
36
- @click="saveUser"
37
- class="btn btn-primary"
38
- >Save</Button
39
- >
40
- <Button
41
- v-if="canPerform('user', 'delete')"
42
- @click="deleteUser"
43
- class="btn btn-danger"
44
- >Delete</Button
45
- >
46
- </div>
47
- </div>
48
- </SimpleAppForm>
49
- </template>
50
- </Card>
51
-
52
- <Card class="m-2">
53
- <template #header>
54
- <div class="relative w-full ...">
55
- <h1 class="font-bold">{{ permissiontitle }}</h1>
56
- <div class="absolute top-0 right-0 h-16 w-16 ...">
57
- <UserButtonPermissionInfo></UserButtonPermissionInfo>
58
- </div>
59
- </div>
60
- </template>
61
- <template #content>
62
- <BlockUI :blocked="blockscreen">
63
- <!-- <div class="text-right m mr-2">
64
-
65
- </div> -->
66
-
67
- <div class="">
68
- <Card
69
- v-if="currentpermissions.length > 0"
70
- v-for="o in orglist"
71
- class="m-2"
72
- >
73
- <template #title>{{ o.orgName }}</template>
74
- <template #content>
75
- <table class="w w-full">
76
- <tr v-for="(b, index) in branchlist">
77
- <td v-if="checkBranchInOrg(o, b)" class="text-center">
78
- {{ b.branchCode }}
79
- </td>
80
- <td
81
- v-if="checkBranchInOrg(o, b)"
82
- class="text-center flex flex-row"
83
- >
84
- <div>
85
- <SelectButton
86
- v-model="currentpermissions[index]['group']"
87
- :options="grouplist"
88
- option-label="label"
89
- option-value="value"
90
- @change="applyPermission(currentpermissions[index])"
91
- ></SelectButton>
92
- </div>
93
- </td>
94
- </tr>
95
- </table>
96
- </template>
97
- </Card>
98
- </div>
99
- </BlockUI>
100
- </template>
101
- </Card>
102
- </div>
103
- </template>
104
- <script setup lang="ts">
105
- // import Card from "primevue/card";
106
- import {SimpleAppInputType} from "~/types"
107
- import { Permission, User } from "../../../simpleapp/generate/openapi/api";
108
- import _ from "lodash";
109
- import SelectButton from "primevue/selectbutton";
110
- import { SearchBody, EventType } from "~/types";
111
-
112
- import {
113
- UserListItem,
114
- NotificationStatus,
115
- Notification,
116
- BranchListItem,
117
- OrgListItem,
118
- PermissionListItem,
119
- } from "~/types";
120
- const {
121
- $event,
122
- $PermissionDoc,
123
- $OrganizationDoc,
124
- $BranchDoc,
125
- $UserDoc,
126
- // $InvitationDoc,
127
- } = useNuxtApp();
128
- const userdoc = $UserDoc();
129
- const userdata = userdoc.getReactiveData();
130
- const currentpermissions = ref<Permission[]>([]);
131
- currentpermissions.value = [];
132
- const blockscreen = ref(false);
133
- const permlist = ref<PermissionListItem[]>([]);
134
- // const userlist = ref<UserListItem[]>([]);
135
- const orglist = ref<OrgListItem[]>([]);
136
- const branchlist = ref<BranchListItem[]>([]);
137
- const permdoc = $PermissionDoc();
138
- const orgdoc = $OrganizationDoc();
139
- const branchdoc = $BranchDoc();
140
- const permissiontitle = "Permission Information";
141
- const usertitle = "User Information";
142
- const grouplist = getAllGroups().map((item) => {
143
- return { value: item, label: _.capitalize(item) };
144
- });
145
-
146
- /**
147
- * delete user
148
- * @param user:User object
149
- */
150
- const deleteUser = async (user: any) => {
151
- await userdoc.delete(String(userdata.value._id));
152
- //NotificationEvent
153
- $event("RefreshUser", "");
154
- goTo("user");
155
- };
156
-
157
- /**********applPermission ******/
158
- /**
159
- * apply permission:
160
- * _id:'', group:'' => skip
161
- * _id: '', group:'something' => create
162
- * _id:'something', 'group':'something' => update
163
- * _id:'something', group:'' => remove
164
- */
165
- const applyPermission = async (d: Permission) => {
166
- let result;
167
- // console.log("apply permission", d);
168
- blockscreen.value = true;
169
- d._id = String(d._id ?? "");
170
- d.group = String(d.group ?? "");
171
- permdoc.setNew();
172
- const data = permdoc.getReactiveData();
173
- data.value = {
174
- orgId: d.orgId,
175
- branchId: d.branchId,
176
- group: d.group,
177
- userId: d.userId,
178
- };
179
- // console.log("apply permission", data.value);
180
- if (!d._id && !d.group) {
181
- //no changes
182
- } else if (!d._id && d.group) {
183
- result = await permdoc.create();
184
- } else if (d._id && d.group) {
185
- data.value = d;
186
- result = await permdoc.update();
187
- } else if (d._id && !d.group) {
188
- d.group = "";
189
- data.value = d;
190
- result = await permdoc.delete(d._id);
191
- } else {
192
- console.warn("unknown apply permission", result);
193
- }
194
- // refreshList(false);
195
- onSelectUser(String(d.userId));
196
- blockscreen.value = false;
197
- };
198
-
199
- const checkBranchInOrg = (org: OrgListItem, branch: BranchListItem) => {
200
- return org.orgId === branch.orgId;
201
- };
202
-
203
- const saveUser = async () => {
204
- await userdoc.update();
205
- $event("RefreshUser", "");
206
- onSelectUser(String(userdata.value._id));
207
- };
208
-
209
- const onSelectUser = async (userId: string) => {
210
- console.log("onSelectUser", userId);
211
- // .addRoute()
212
- // const user: UserListItem = { ...menuitem };
213
- const orgsearchbody: SearchBody = {
214
- fields: ["orgId", "orgCode", "orgName", "active"],
215
- };
216
- const branchsearchbody: SearchBody = {
217
- fields: ["orgId", "branchId", "branchCode", "branchName", "active"],
218
- };
219
- const permsearchbody: SearchBody = {
220
- filter: { userId: userId },
221
- fields: [
222
- "uid",
223
- "userId",
224
- "branchId",
225
- "tenantId",
226
- "orgId",
227
- "active",
228
- "group",
229
- "created",
230
- ],
231
- };
232
-
233
- orglist.value = await orgdoc.search(orgsearchbody);
234
- branchlist.value = await branchdoc.search(branchsearchbody);
235
- permlist.value = await permdoc.search(permsearchbody);
236
- await userdoc.getById(userId);
237
- // console.log("orglist.value", orglist.value);
238
- // console.log("branchlist.value", branchlist.value);
239
- // console.log("permlist.value", permlist.value);
240
- // selected.value = String(user._id);
241
-
242
- // activeuser.value = user.fullName;
243
- //sso id from keycloak
244
- // const uid = String(user.uid);
245
- //_id from mongodb
246
-
247
- currentpermissions.value = [];
248
-
249
- for (let i = 0; i < branchlist.value.length; i++) {
250
- const b = branchlist.value[i];
251
- const permdata = getPermssionData(userId, b.branchId);
252
- const tmp: Permission = {
253
- _id: permdata?._id,
254
- userId: userId,
255
- tenantId: b.tenantId,
256
- orgId: b.orgId,
257
- branchId: b.branchId,
258
- group: permdata.group,
259
- };
260
- currentpermissions.value.push(tmp);
261
- }
262
- // console.log("currentpermissions", currentpermissions);
263
- blockscreen.value = false;
264
- };
265
- /**
266
- * prepare dataobj (existing or empty dummy data) for each branch permission
267
- * @param uid
268
- * @param branchId
269
- */
270
- const getPermssionData = (userId: string, branchId: number) => {
271
- // console.log("getPermssionData", userId, branchId);
272
- const result = permlist.value.find((item: any) => {
273
- // console.log(
274
- // item.userId,
275
- // "== ",
276
- // userId,
277
- // " &&",
278
- // item.branchId,
279
- // "==",
280
- // branchId,
281
- // );
282
- return item.userId == userId && item.branchId == branchId;
283
- });
284
-
285
- // console.log("permlist.value.",permlist.value,result)
286
- let pm: Permission = {
287
- _id: result?._id ?? "",
288
- orgId: result?.orgId ?? 0,
289
- tenantId: result?.tenantId ?? 0,
290
- branchId: branchId,
291
- userId: userId,
292
- group: result?.group ?? "",
293
- };
294
- return pm;
295
- };
296
-
297
- onMounted(() => {
298
- const id = String(useRoute().params.id);
299
- console.log("id", id);
300
- onSelectUser(id);
301
- });
302
- </script>
@@ -1,30 +0,0 @@
1
- <template>
2
- <NuxtPage />
3
- </template>
4
- <script setup lang="ts">
5
- /**
6
- * This file was automatically generated by simpleapp generator. Every
7
- * MODIFICATION OVERRIDE BY GENERATEOR
8
- * last change 2024-01-22
9
- * Author: Ks Tan
10
- */
11
-
12
- definePageMeta({
13
- name: 'Login',
14
- auth: false,
15
- })
16
-
17
- const route = useRoute();
18
- const { signIn } = useAuth()
19
- const callbackUrl = ref('')
20
- onMounted(async () => {
21
- if(route.query.callbackUrl) {
22
- callbackUrl.value = <string>route.query.callbackUrl;
23
- }else{
24
- callbackUrl.value = '/'
25
- }
26
- callbackUrl.value = decodeURIComponent(callbackUrl.value)
27
- console.log("callbackUrlcallbackUrlcallbackUrl",callbackUrl.value)
28
- await signIn('keycloak', { callbackUrl: callbackUrl.value })
29
- })
30
- </script>