@simitgroup/simpleapp-generator 1.0.46 → 1.0.48

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 (147) hide show
  1. package/README.md +35 -1
  2. package/buildinschemas copy/docnoformat.docno.jsonschema.json +2 -20
  3. package/dist/buildinschemas/autoincreament.js +1 -1
  4. package/dist/buildinschemas/autoincreament.js.map +1 -1
  5. package/dist/buildinschemas/branch.js +1 -1
  6. package/dist/buildinschemas/branch.js.map +1 -1
  7. package/dist/buildinschemas/docnoformat.d.ts.map +1 -1
  8. package/dist/buildinschemas/docnoformat.js +12 -25
  9. package/dist/buildinschemas/docnoformat.js.map +1 -1
  10. package/dist/buildinschemas/user.d.ts.map +1 -1
  11. package/dist/buildinschemas/user.js +1 -0
  12. package/dist/buildinschemas/user.js.map +1 -1
  13. package/dist/framework.d.ts.map +1 -1
  14. package/dist/framework.js +11 -3
  15. package/dist/framework.js.map +1 -1
  16. package/dist/generate.js +33 -22
  17. package/dist/generate.js.map +1 -1
  18. package/dist/index.js +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/processors/jsonschemabuilder.d.ts.map +1 -1
  21. package/dist/processors/jsonschemabuilder.js +10 -0
  22. package/dist/processors/jsonschemabuilder.js.map +1 -1
  23. package/dist/type.d.ts +115 -22
  24. package/dist/type.d.ts.map +1 -1
  25. package/dist/type.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/buildinschemas/autoincreament.ts +1 -1
  28. package/src/buildinschemas/branch.ts +1 -1
  29. package/src/buildinschemas/docnoformat.ts +13 -27
  30. package/src/buildinschemas/user.ts +1 -0
  31. package/src/framework.ts +11 -3
  32. package/src/generate.ts +35 -22
  33. package/src/index.ts +1 -1
  34. package/src/processors/jsonschemabuilder.ts +14 -1
  35. package/src/type.ts +137 -22
  36. package/templates/basic/nest/processor.ts.eta +5 -3
  37. package/templates/basic/nest/service.ts.eta +2 -4
  38. package/templates/basic/nuxt/pages.crud.vue.eta +3 -2
  39. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +18 -2
  40. package/templates/nest/src/app.controller.ts.eta +6 -0
  41. package/templates/nest/src/app.module.ts.eta +9 -1
  42. package/templates/nest/src/app.service.ts.eta +6 -0
  43. package/templates/nest/src/main.ts.eta +7 -0
  44. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +6 -2
  45. package/templates/nest/src/simpleapp/generate/commons/audittrail.service.ts.eta +17 -0
  46. package/templates/nest/src/simpleapp/generate/commons/decorators/appuser.decorator.ts.eta +6 -0
  47. package/templates/nest/src/simpleapp/generate/commons/dicts/documents.ts.eta +14 -0
  48. package/templates/nest/src/simpleapp/generate/commons/dicts/foreignkeys.ts.eta +6 -0
  49. package/templates/nest/src/simpleapp/generate/commons/docnogenerator.service.ts.eta +9 -3
  50. package/templates/nest/src/simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta +23 -3
  51. package/templates/nest/src/simpleapp/generate/commons/interceptors/response.interceptor.ts.eta +52 -10
  52. package/templates/nest/src/simpleapp/generate/commons/middlewares/tenant.middleware.ts.eta +6 -0
  53. package/templates/nest/src/simpleapp/generate/commons/providers/workflow.provider.ts.etax +6 -0
  54. package/templates/nest/src/simpleapp/generate/commons/roles/roles.decorator.ts.eta +6 -1
  55. package/templates/nest/src/simpleapp/generate/commons/roles/roles.enum.ts.eta +6 -0
  56. package/templates/nest/src/simpleapp/generate/commons/roles/roles.group.ts.eta +6 -0
  57. package/templates/nest/src/simpleapp/generate/commons/roles/roles.guard.ts.eta +6 -1
  58. package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +15 -7
  59. package/templates/nest/src/simpleapp/generate/controllers/simpleapp.controller.ts.eta +6 -0
  60. package/templates/nest/src/simpleapp/generate/models/apievent.model.ts.eta +27 -0
  61. package/templates/nest/src/simpleapp/generate/models/perm.model.ts.eta +3 -4
  62. package/templates/nest/src/simpleapp/generate/models/tenant.model.ts.eta +3 -5
  63. package/templates/nest/src/simpleapp/generate/models/user.model.ts.eta +3 -4
  64. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +54 -12
  65. package/templates/nest/src/simpleapp/generate/types/apievent.type.ts.eta +22 -0
  66. package/templates/nest/src/simpleapp/generate/types/index.ts.eta +6 -0
  67. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +6 -0
  68. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +6 -0
  69. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +6 -0
  70. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +6 -0
  71. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +5 -6
  72. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +50 -10
  73. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +9 -10
  74. package/templates/nest/src/simpleapp/services/org.service.ts.eta +4 -6
  75. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +6 -7
  76. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +5 -6
  77. package/templates/nest/src/simpleapp/services/user.service.ts.eta +5 -6
  78. package/templates/nest/src/simpleapp/simpleapp.module.ts.eta +6 -8
  79. package/templates/nuxt/app.vue.eta +6 -1
  80. package/templates/nuxt/assets/css/style.css._eta +12 -0
  81. package/templates/nuxt/assets/css/tailwind.css._eta +10 -0
  82. package/templates/nuxt/assets/primevue/passthrough.ts._eta +37 -0
  83. package/templates/nuxt/components/ButtonCreateTenant.vue.eta +68 -0
  84. package/templates/nuxt/components/ButtonHome.vue.eta +10 -0
  85. package/templates/nuxt/components/ButtonLogout.vue.eta +9 -0
  86. package/templates/nuxt/components/ButtonMenuPicker.vue.eta +55 -0
  87. package/templates/nuxt/components/ButtonPermissionInfo.vue.eta +113 -0
  88. package/templates/nuxt/components/ButtonProfile.vue.eta +52 -0
  89. package/templates/nuxt/components/CrudNestedDoc.vue.eta +16 -8
  90. package/templates/nuxt/components/CrudSimple.vue.eta +13 -11
  91. package/templates/nuxt/components/DebugDocumentData.vue.eta +1 -1
  92. package/templates/nuxt/components/HeaderBar.vue.eta +39 -0
  93. package/templates/nuxt/components/Invitation.vue.eta +2 -2
  94. package/templates/nuxt/components/ListView.vue.eta +52 -0
  95. package/templates/nuxt/components/Menus.vue.eta +6 -6
  96. package/templates/nuxt/components/SelectBranch.vue.eta +35 -0
  97. package/templates/nuxt/components/SimpleAppDatatable.vue.eta +0 -1
  98. package/templates/nuxt/components/SimpleAppDocumentNo.vue.eta +2 -2
  99. package/templates/nuxt/components/SimpleAppInputTable.vue.eta +2 -2
  100. package/templates/nuxt/components/SimpleFieldContainer.vue.eta +18 -12
  101. package/templates/nuxt/components/Spinner.vue.eta +9 -0
  102. package/templates/nuxt/composables/getMenus.generate.ts.eta +5 -4
  103. package/templates/nuxt/layouts/default.vue.eta +3 -12
  104. package/templates/nuxt/layouts/sidelistcrud.vue.eta +43 -0
  105. package/templates/nuxt/middleware/{10.acl.global.ts.eta → 30.acl.global.ts.eta} +6 -0
  106. package/templates/nuxt/nuxt.config.ts.eta +55 -12
  107. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +274 -247
  108. package/templates/nuxt/pages/[xorg]/index.vue._eta +13 -0
  109. package/templates/nuxt/pages/[xorg]/organization/index.vue.eta +89 -65
  110. package/templates/nuxt/pages/[xorg]/permission/index.vue.eta +7 -7
  111. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +33 -33
  112. package/templates/nuxt/pages/index.vue.eta +10 -85
  113. package/templates/nuxt/pages/login.vue.eta +9 -3
  114. package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +16 -19
  115. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +19 -3
  116. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +4 -4
  117. package/templates/nuxt/server/api/[xorg]/[...].ts.eta +4 -4
  118. package/templates/nuxt/server/api/auth/[...].ts.eta +6 -0
  119. package/templates/nuxt/server/api/auth/logout.ts.eta +6 -1
  120. package/templates/nuxt/server/api/profile/[...].ts.eta +4 -5
  121. package/templates/nuxt/server/api/profile/index.ts.eta +4 -6
  122. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +9 -2
  123. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +12 -3
  124. package/templates/nuxt/simpleapp/generate/commons/events.ts.eta +6 -0
  125. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +6 -0
  126. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +6 -0
  127. package/templates/nuxt/tailwind.config.ts._eta +66 -0
  128. package/templates/nuxt/types/index.ts.eta +22 -1
  129. package/templates/project/build.sh.eta +4 -4
  130. package/templates/project/schemas/category.ts.eta +40 -27
  131. package/templates/project/schemas/customer.ts.eta +35 -0
  132. package/templates/project/schemas/index.ts.eta +4 -4
  133. package/templates/project/schemas/invoice.ts.eta +56 -0
  134. package/templates/project/schemas/product.ts.eta +41 -57
  135. package/templates/project/sharelibs/index.ts.eta +2 -0
  136. package/templates/project/sharelibs/money.ts.eta +17 -0
  137. package/tsconfig.tsbuildinfo +1 -1
  138. package/templates/nuxt/assets/css/tailwind.css.eta +0 -35
  139. package/templates/nuxt/components/PermissionInfo.vue.eta +0 -92
  140. package/templates/nuxt/pages/[xorg]/index.vue.eta +0 -36
  141. package/templates/nuxt/tailwind.config.ts.eta +0 -9
  142. package/templates/project/shares/index.ts.eta +0 -2
  143. /package/templates/nest/{.env.eta → .env._eta} +0 -0
  144. /package/templates/nuxt/{.env.eta → .env._eta} +0 -0
  145. /package/templates/nuxt/pages/[xorg]/branch/{index.vue.eta → index.vue.etax} +0 -0
  146. /package/templates/project/{config.json.eta → config.json._eta} +0 -0
  147. /package/templates/project/{shares → sharelibs}/hello.ts.eta +0 -0
@@ -1,269 +1,296 @@
1
1
  <template>
2
- <button class="btn-primary" @click="newRecord">New</button>
3
- <ConfirmPopup></ConfirmPopup>
4
- <DebugDocumentData v-model="data"></DebugDocumentData>
5
- <SimpleAppDatatable
6
-
7
- v-model="recordlist"
8
- :setting="{}"
9
- :columns="['docNoFormatNo','docNoFormatName','active','docNoPattern','nextNumber','isMonthly']"
10
- >
11
- <Column header="action">
12
- <template #body="{data,index}">
13
- <button class="pi pi-pencil btn-primary" @click="triggerEdit(data)"></button>
14
- <button class="pi pi-times btn-danger" @click="triggerDelete(data)"></button>
15
- </template>
16
-
17
- </Column>
18
- </SimpleAppDatatable>
19
- <Dialog v-model:visible="visible" modal :header="popuptitle" class="crudsimple-dialog" :autoZIndex="false" :style="{zIndex:100, width: '80vw' }">
20
- <div class="simpleapp-tool-bar col-span-4 text-left gap-4" >
21
- <button class="btn-default" :disabled="disabled" @click="newRecord" type="button" v-if="canPerform(resourcename,'create')">New</button>
22
- <button class="btn-primary" :disabled="disabled" @click="createData" type="button" v-if="canPerform(resourcename,'create') && data._id==''">Create</button>
23
- <button class="btn-primary" :disabled="disabled" @click="updateData" type="button" v-if="canPerform(resourcename,'update') && data._id!=''">Update</button>
24
- <button class="btn-danger" :disabled="disabled" @click="deleteData($event)" type="button" v-if="canPerform(resourcename,'delete') && data._id!=''">Delete</button>
25
- <ProgressSpinner v-if="disabled==true" style="width: 2rem; height: 2rem" ></ProgressSpinner>
26
- <ConfirmPopup></ConfirmPopup>
27
-
28
- </div>
29
- <SimpleAppForm
30
- :document="doc"
31
- #default="o"
32
- title="Document No"
33
-
34
- >
35
- <div class="grid grid-cols-4">
36
- <SimpleAppText
37
- autofocus
38
- :setting="o.getField('#/properties/docNoFormatNo')"
39
- v-model="data.docNoFormatNo"
40
- />
41
- <SimpleAppText
42
- autofocus
43
- :setting="o.getField('#/properties/docNoFormatName')"
44
- v-model="data.docNoFormatName"
45
- />
46
- <SimpleAppCheckbox
47
- autofocus
48
- :setting="o.getField('#/properties/active')"
49
- v-model="data.active"
50
- />
2
+ <Button class="btn-primary" @click="newRecord">New</Button>
3
+ <ConfirmPopup></ConfirmPopup>
4
+ <DebugDocumentData v-model="data"></DebugDocumentData>
5
+ <SimpleAppDatatable
6
+ v-model="recordlist"
7
+ :setting="{}"
8
+ :columns="[
9
+ 'branch.label',
10
+ 'docNoFormatNo',
11
+ 'docNoFormatName',
12
+ 'active',
13
+ 'docNoPattern',
14
+ 'nextNumber',
15
+ ]"
16
+ >
17
+ <Column header="action">
18
+ <template #body="{ data, index }">
19
+ <Button
20
+ class="pi pi-pencil btn-primary"
21
+ @click="triggerEdit(data)"
22
+ ></Button>
23
+ <Button
24
+ class="pi pi-times btn-danger"
25
+ @click="triggerDelete(data)"
26
+ ></Button>
27
+ </template>
28
+ </Column>
29
+ </SimpleAppDatatable>
30
+ <Dialog
31
+ v-model:visible="visible"
32
+ modal
33
+ :header="popuptitle"
34
+ class="crudsimple-dialog"
35
+ :autoZIndex="false"
36
+ :style="{ zIndex: 100, width: '80vw' }"
37
+ >
38
+ <div class="simpleapp-tool-bar col-span-4 text-left gap-4">
39
+ <Button
40
+ class="btn-default"
41
+ :disabled="disabled"
42
+ @click="newRecord"
43
+ type="button"
44
+ v-if="canPerform(resourcename, 'create')"
45
+ >
46
+ New
47
+ </Button>
48
+ <Button
49
+ class="btn-primary"
50
+ :disabled="disabled"
51
+ @click="createData"
52
+ type="button"
53
+ v-if="canPerform(resourcename, 'create') && data.created == ''"
54
+ >
55
+ Create
56
+ </Button>
57
+ <Button
58
+ class="btn-primary"
59
+ :disabled="disabled"
60
+ @click="updateData"
61
+ type="button"
62
+ v-if="canPerform(resourcename, 'update') && data.created != ''"
63
+ >
64
+ Update
65
+ </Button>
66
+ <Button
67
+ class="btn-danger"
68
+ :disabled="disabled"
69
+ @click="deleteData($event)"
70
+ type="button"
71
+ v-if="canPerform(resourcename, 'delete') && data.created != ''"
72
+ >
73
+ Delete
74
+ </Button>
75
+ <ProgressSpinner
76
+ v-if="disabled == true"
77
+ style="width: 2rem; height: 2rem"
78
+ ></ProgressSpinner>
79
+ <ConfirmPopup></ConfirmPopup>
80
+ </div>
81
+ <SimpleAppForm :document="doc" #default="o" title="Document No">
82
+ <div class="grid grid-cols-4 gap-4">
83
+ <SimpleAppText
84
+ autofocus
85
+ :setting="o.getField('#/properties/docNoFormatNo')"
86
+ v-model="data.docNoFormatNo"
87
+ />
88
+ <SimpleAppText
89
+ autofocus
90
+ :setting="o.getField('#/properties/docNoFormatName')"
91
+ v-model="data.docNoFormatName"
92
+ />
93
+ <SimpleAppAutocomplete
94
+ v-model="data.branch"
95
+ :setting="o.getField('#/properties/branch')"
96
+ :remoteSrc="getAutocomplete('branch')"
97
+ optionLabel="label"
98
+ />
99
+ <SimpleAppCheckbox
100
+ autofocus
101
+ :setting="o.getField('#/properties/active')"
102
+ v-model="data.active"
103
+ />
51
104
 
52
- <SimpleAppCheckbox
53
- autofocus
54
- :setting="o.getField('#/properties/default')"
55
- v-model="data.default"
56
- />
105
+ <SimpleAppCheckbox
106
+ autofocus
107
+ :setting="o.getField('#/properties/default')"
108
+ v-model="data.default"
109
+ />
57
110
 
58
-
111
+ <SimpleAppText
112
+ autofocus
113
+ :setting="o.getField('#/properties/docNoPattern')"
114
+ v-model="data.docNoPattern"
115
+ @change="updateSample"
116
+ :description="sample"
117
+ v-tooltip="'Examples: PO-<00000>, SI{YY}/<000>, SI{YYMM}/<000>'"
118
+ />
59
119
 
60
- <SimpleAppText
61
- autofocus
62
- :setting="o.getField('#/properties/docNoPattern')"
63
- v-model="data.docNoPattern"
64
- />
65
-
66
- <SimpleAppCheckbox
67
- autofocus
68
- :setting="o.getField('#/properties/isMonthly')"
69
- v-model="data.isMonthly"
70
- />
71
-
72
- <SimpleAppNumber
73
- autofocus
74
- :setting="o.getField('#/properties/nextNumber')"
75
- v-model="data.nextNumber"
76
- />
77
-
78
- <SimpleAppValue :setting="o.getField('#/properties/monthlySetting')">
79
- <SimpleAppNumber
80
- autofocus
81
- :setting="o.getField('#/properties/monthlySetting/properties/jan')"
82
- instancePath="#/monthlySetting/jan"
83
- v-model="data.monthlySetting.jan"
84
- />
85
-
86
- <SimpleAppNumber
87
- autofocus
88
- :setting="o.getField('#/properties/monthlySetting/properties/feb')"
89
- instancePath="#/monthlySetting/feb"
90
- v-model="data.monthlySetting.feb"
91
- />
92
-
93
- <SimpleAppNumber
94
- autofocus
95
- :setting="o.getField('#/properties/monthlySetting/properties/mar')"
96
- instancePath="#/monthlySetting/mar"
97
- v-model="data.monthlySetting.mar"
98
- />
99
-
100
- <SimpleAppNumber
101
- autofocus
102
- :setting="o.getField('#/properties/monthlySetting/properties/apr')"
103
- instancePath="#/monthlySetting/apr"
104
- v-model="data.monthlySetting.apr"
105
- />
106
-
107
- <SimpleAppNumber
108
- autofocus
109
- :setting="o.getField('#/properties/monthlySetting/properties/may')"
110
- instancePath="#/monthlySetting/may"
111
- v-model="data.monthlySetting.may"
112
- />
113
-
114
- <SimpleAppNumber
115
- autofocus
116
- :setting="o.getField('#/properties/monthlySetting/properties/jun')"
117
- instancePath="#/monthlySetting/jun"
118
- v-model="data.monthlySetting.jun"
119
- />
120
-
121
- <SimpleAppNumber
122
- autofocus
123
- :setting="o.getField('#/properties/monthlySetting/properties/jul')"
124
- instancePath="#/monthlySetting/jul"
125
- v-model="data.monthlySetting.jul"
126
- />
127
-
128
- <SimpleAppNumber
129
- autofocus
130
- :setting="o.getField('#/properties/monthlySetting/properties/aug')"
131
- instancePath="#/monthlySetting/aug"
132
- v-model="data.monthlySetting.aug"
133
- />
134
-
135
- <SimpleAppNumber
136
- autofocus
137
- :setting="o.getField('#/properties/monthlySetting/properties/sep')"
138
- instancePath="#/monthlySetting/sep"
139
- v-model="data.monthlySetting.sep"
140
- />
141
-
142
- <SimpleAppNumber
143
- autofocus
144
- :setting="o.getField('#/properties/monthlySetting/properties/oct')"
145
- instancePath="#/monthlySetting/oct"
146
- v-model="data.monthlySetting.oct"
147
- />
148
-
149
- <SimpleAppNumber
150
- autofocus
151
- :setting="o.getField('#/properties/monthlySetting/properties/nov')"
152
- instancePath="#/monthlySetting/nov"
153
- v-model="data.monthlySetting.nov"
154
- />
155
-
156
- <SimpleAppNumber
157
- autofocus
158
- :setting="o.getField('#/properties/monthlySetting/properties/dec')"
159
- instancePath="#/monthlySetting/dec"
160
- v-model="data.monthlySetting.dec"
161
- />
162
- </SimpleAppValue>
163
- </div>
164
- </SimpleAppForm>
165
- </Dialog>
120
+ <SimpleAppNumber
121
+ autofocus
122
+ :setting="o.getField('#/properties/nextNumber')"
123
+ v-model="data.nextNumber"
124
+ />
125
+ </div>
126
+ </SimpleAppForm>
127
+ </Dialog>
166
128
  </template>
167
129
  <script setup lang="ts">
168
- import _ from 'lodash'
169
- import Dialog from 'primevue/dialog';
170
- import Column from 'primevue/column';
171
- import {ListItem} from '@/types/listview'
172
- import ConfirmPopup from 'primevue/confirmpopup';
130
+ import _ from "lodash";
131
+ import moment from "moment";
132
+ import Dialog from "primevue/dialog";
133
+ import Column from "primevue/column";
134
+ import { ListItem } from "@/types/listview";
135
+ import ProgressSpinner from "primevue/progressspinner";
136
+ import ConfirmPopup from "primevue/confirmpopup";
173
137
  import { useConfirm } from "primevue/useconfirm";
174
- const {$event,$listen, $DocnoformatDoc} = useNuxtApp()
175
- const doc = $DocnoformatDoc()
176
- const data = doc.getReactiveData()
138
+ const { $event, $listen, $DocnoformatDoc } = useNuxtApp();
139
+ const doc = $DocnoformatDoc();
140
+ const data = doc.getReactiveData();
177
141
 
178
- const visible = ref(false)
179
- const disabled = ref(false)
180
- const popuptitle = ref('edit')
181
- const recordlist = ref()
182
- const selectedDoctype = ref('')
142
+ const visible = ref(false);
143
+ const disabled = ref(false);
144
+ const popuptitle = ref("edit");
145
+ const recordlist = ref();
146
+ const selectedDoctype = ref("");
147
+ const havedocdate = ref(false);
183
148
  const confirm = useConfirm();
184
149
  // This will work in both `<script setup>` and `<script>`
185
- definePageMeta({
186
- layout: 'sidelistcrud',
150
+ if(data.value.created==''){
151
+ definePageMeta({
152
+ layout: "sidelistcrud",
187
153
  });
154
+ }
188
155
 
189
- const resourcename = ref( _.upperFirst(doc.getDocName()))
156
+ const sample = ref("");
157
+ const resourcename = ref(_.upperFirst(doc.getDocName()));
190
158
 
191
- const refresh = async() =>{
192
- const filter = {docNoType: selectedDoctype.value}
193
-
194
- console.log("selectedDoctype",selectedDoctype.value)
195
-
196
- const results = await doc.search(filter)
197
- recordlist.value = results
198
- }
199
- $listen('itemselected', (item:ListItem)=>{
200
- selectedDoctype.value = item.code
201
- refresh()
202
-
203
- })
159
+ const refresh = async () => {
160
+ const filter = { docNoType: selectedDoctype.value };
161
+
162
+ console.log("selectedDoctype", selectedDoctype.value);
204
163
 
205
- onMounted(()=>{
206
- const doclist = getDocTypes()
207
- console.log(doclist)
208
- const listdata:ListItem[] = getDocTypes().map(item=> ({name:item.docName,code:item.docType} as ListItem))
209
- $event('listloaded',listdata)
210
- })
164
+ const results = await doc.search({ filter: filter });
165
+ recordlist.value = results;
166
+ };
167
+ $listen("itemselected", (item: ListItem) => {
168
+ selectedDoctype.value = item.code;
169
+ havedocdate.value = item.data.documentDate != "";
170
+ refresh();
171
+ });
172
+
173
+ const updateSample = () => {
174
+ sample.value = "Example: " + previewDocNo();
175
+ };
176
+ onMounted(() => {
177
+ const doclist = getDocTypes();
178
+ console.log(doclist);
179
+ const listdata: ListItem[] = getDocTypes()
180
+ .filter((item) => item.docNumber)
181
+ .map(
182
+ (item) =>
183
+ ({ name: item.docName, code: item.docType, data: item }) as ListItem,
184
+ );
185
+ $event("listloaded", listdata);
186
+ });
211
187
  const newRecord = () => {
212
- // useRouter().push({ path: `${props.path}` })
213
- doc.setNew()
214
- data.value.docNoType=selectedDoctype.value
188
+ // useRouter().push({ path: `${props.path}` })
189
+ doc.setNew();
190
+ data.value.docNoType = selectedDoctype.value;
215
191
 
216
- visible.value=true;
217
- $event("newRecord")
192
+ visible.value = true;
193
+ $event("newRecord");
194
+ };
195
+ const createData = () => {
196
+ disabled.value = true;
197
+
198
+ doc
199
+ .create()
200
+ .then(() => {
201
+ visible.value = false;
202
+ refresh();
203
+ })
204
+ .catch((err) => {
205
+ console.error(err);
206
+ })
207
+ .finally(() => (disabled.value = false));
208
+ };
209
+ const updateData = () => {
210
+ disabled.value = true;
211
+
212
+ doc
213
+ .update()
214
+ .then(() => {
215
+ visible.value = false;
216
+ refresh();
217
+ })
218
+ .catch((err) => {
219
+ console.error(err);
220
+ })
221
+ .finally(() => (disabled.value = false));
222
+ };
223
+ const deleteData = (e: any) => {
224
+ confirm.require({
225
+ target: e.currentTarget as HTMLElement,
226
+ message: "Delete?",
227
+ icon: "pi pi-exclamation-triangle",
228
+ acceptClass: "p-button-danger",
229
+ accept: () => {
230
+ disabled.value = true;
231
+ doc
232
+ .delete(data.value._id ?? "")
233
+ .then(() => (visible.value = false))
234
+ .finally(() => {
235
+ refresh();
236
+ });
237
+ },
238
+ reject: () => {
239
+ console.log("Cancel delete");
240
+ },
241
+ });
218
242
  };
219
- const createData= ()=>{
220
- disabled.value=true
221
-
222
- doc.create().then(()=>{
223
- visible.value=false
224
- refresh()
225
- }).catch(err=>{
226
- console.error(err)
227
- }).finally(()=>disabled.value=false)
228
- }
229
- const updateData= ()=>{
230
- disabled.value=true
231
-
232
- doc.update().then(()=>{
233
- visible.value=false
234
- refresh()
235
- }).catch(err=>{
236
- console.error(err)
237
- }).finally(()=>disabled.value=false)
238
- }
239
- const deleteData= (e:any)=>{
240
- confirm.require({
241
- target: e.currentTarget as HTMLElement,
242
- message:'Delete?',
243
- icon: 'pi pi-exclamation-triangle',
244
- acceptClass: 'p-button-danger',
245
- accept: ()=>{
246
- disabled.value=true
247
- doc.delete(data.value._id ?? "").then(()=>visible.value=false).finally(() => {
248
- refresh();
249
- });
250
- },
251
- reject: () => {
252
- console.log("Cancel delete")
253
- }
254
- })
255
- }
256
243
 
257
244
  const triggerDelete = async (event: any) => {
258
- let id = event._id.toString()
259
- await doc.delete(id)
260
- refresh()
245
+ let id = event._id.toString();
246
+ await doc.delete(id);
247
+ refresh();
261
248
  };
262
249
  const triggerEdit = async (event: any) => {
263
- let id = event._id.toString()
264
- await doc.getById(id)
265
- console.log(id)
266
- visible.value=true
267
- useRouter().push({ path:`/${useRoute().params.xorg}/docnoformat/${id}` })
250
+ let id = event._id.toString();
251
+ await doc.getById(id);
252
+ console.log(id);
253
+ visible.value = true;
254
+ // useRouter().push({ path: `/${useRoute().params.xorg}/docnoformat/${id}` });
255
+ };
256
+
257
+ const previewDocNo = (): string => {
258
+ const pattern = data.value.docNoPattern;
259
+ if (pattern) {
260
+ const numberReg: RegExp = /\[(.*?)\]/g;
261
+ const dateReg: RegExp = /\{(.*?)\}/g;
262
+ let newvalue = pattern;
263
+ const numberpattern = pattern.match(numberReg);
264
+ const datepattern = pattern.match(dateReg);
265
+
266
+ if (numberpattern && numberpattern.length > 0) {
267
+ const numberlength = numberpattern[0]
268
+ .replace("[", "")
269
+ .replace("]", "").length;
270
+
271
+ let nextnumber = (data.value.nextNumber ?? 0).toString();
272
+
273
+ const numberdiff = numberlength - nextnumber.length;
274
+
275
+ for (let n = 0; n < numberdiff; n++) {
276
+ nextnumber = "0" + nextnumber;
277
+ }
278
+ newvalue = newvalue.replace(numberpattern[0], nextnumber);
279
+ }
280
+
281
+ if (datepattern && datepattern.length > 0) {
282
+ for (let d = 0; d < datepattern.length; d++) {
283
+ const dpattern = datepattern[d];
284
+ const date = new Date();
285
+ const formatteddate = moment().format(
286
+ dpattern.replace("{", "").replace("}", ""),
287
+ );
288
+ newvalue = newvalue.replace(dpattern, formatteddate);
289
+ }
290
+ }
291
+ return newvalue;
292
+ } else {
293
+ return "";
294
+ }
268
295
  };
269
- </script>
296
+ </script>
@@ -0,0 +1,13 @@
1
+ <script lang="ts" setup>
2
+ /**
3
+ * This file was automatically generated by simpleapp generator.
4
+ * YOU ALLOWED TO CHANGE THIS FILE, IT WONT OVERRIDE BY GENERATOR
5
+ * last change 2023-10-28
6
+ * Author: Ks Tan
7
+ */
8
+ </script>
9
+ <template>
10
+ <div class="frontpage-container" >
11
+ <h1 class="border text-3xl text-center m-20 p-20">Create your front page here</h1>
12
+ </div>
13
+ </template>