@simitgroup/simpleapp-generator 1.0.63 → 1.1.0

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 copy.md +9 -9
  2. package/buildinschemas copy/autoincreament.autoinc.jsonschema.json +1 -1
  3. package/buildinschemas copy/docnoformat.docno.jsonschema.json +2 -2
  4. package/dist/buildinschemas/autoincreament.js +6 -6
  5. package/dist/buildinschemas/branch.js +3 -3
  6. package/dist/buildinschemas/branch.js.map +1 -1
  7. package/dist/buildinschemas/docnoformat.js +5 -5
  8. package/dist/buildinschemas/docnoformat.js.map +1 -1
  9. package/dist/buildinschemas/organization.js +3 -3
  10. package/dist/buildinschemas/permission.js +5 -5
  11. package/dist/buildinschemas/permission.js.map +1 -1
  12. package/dist/buildinschemas/tenant.js +2 -2
  13. package/dist/buildinschemas/user.d.ts.map +1 -1
  14. package/dist/buildinschemas/user.js +3 -4
  15. package/dist/buildinschemas/user.js.map +1 -1
  16. package/dist/generate.js +2 -2
  17. package/dist/generate.js.map +1 -1
  18. package/dist/processors/jsonschemabuilder.d.ts.map +1 -1
  19. package/dist/processors/jsonschemabuilder.js +6 -6
  20. package/dist/processors/jsonschemabuilder.js.map +1 -1
  21. package/dist/type.d.ts +7 -19
  22. package/dist/type.d.ts.map +1 -1
  23. package/docs/backend.md +2 -2
  24. package/docs/jsonschema.md +6 -6
  25. package/package.json +1 -1
  26. package/src/buildinschemas/autoincreament.ts +6 -6
  27. package/src/buildinschemas/branch.ts +3 -3
  28. package/src/buildinschemas/docnoformat.ts +5 -5
  29. package/src/buildinschemas/organization.ts +3 -3
  30. package/src/buildinschemas/permission.ts +5 -5
  31. package/src/buildinschemas/tenant.ts +2 -2
  32. package/src/buildinschemas/user.ts +4 -5
  33. package/src/generate.ts +2 -2
  34. package/src/processors/jsonschemabuilder.ts +7 -9
  35. package/src/processors/jsonschemabuilder.ts-old +5 -5
  36. package/src/type.ts +20 -20
  37. package/templates/basic/nest/controller.ts.eta +18 -18
  38. package/templates/basic/nest/processor.ts.eta +1 -1
  39. package/templates/basic/nuxt/pages.[id].vue.eta +1 -1
  40. package/templates/basic/nuxt/pages.landing.vue.eta +12 -17
  41. package/templates/basic/nuxt/{pages.crud.vue.eta → pages.new.vue.eta} +68 -71
  42. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +6 -6
  43. package/templates/nest/src/simpleapp/generate/commons/interceptors/response.interceptor.ts.eta +1 -1
  44. package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +20 -10
  45. package/templates/nest/src/simpleapp/generate/models/apievent.model.ts.eta +1 -1
  46. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +8 -9
  47. package/templates/nest/src/simpleapp/generate/types/apievent.type.ts.eta +1 -1
  48. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +16 -7
  49. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +10 -7
  50. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +2 -2
  51. package/templates/nuxt/assets/css/style.css._eta +32 -0
  52. package/templates/nuxt/assets/primevue/passthrough.ts._eta +9 -2
  53. package/templates/nuxt/components/{DebugDocumentData.vue.eta → debug/DebugDocumentData.vue.eta} +8 -4
  54. package/templates/nuxt/components/{EventNotification.vue.eta → event/EventNotification.vue.eta} +13 -9
  55. package/templates/nuxt/components/{HeaderBar.vue.eta → header/HeaderBar.vue.eta} +6 -6
  56. package/templates/nuxt/components/{SelectBranch.vue.eta → header/HeaderSelectBranch.vue.eta} +2 -2
  57. package/templates/nuxt/components/{ButtonMenuPicker.vue.eta → header/button/HeaderButtonMenuPicker.vue.eta} +3 -3
  58. package/templates/nuxt/components/list/ListView.vue.eta +64 -0
  59. package/templates/nuxt/components/renderer/RendererForeignKey.vue.eta +11 -0
  60. package/templates/nuxt/components/renderer/index.ts.eta +12 -0
  61. package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +77 -0
  62. package/templates/nuxt/components/{SimpleFieldContainer.vue.eta → simpleApp/SimpleAppFieldContainer.vue.eta} +12 -11
  63. package/templates/nuxt/components/{SimpleAppForm.vue.eta → simpleApp/SimpleAppForm.vue.eta} +5 -4
  64. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +288 -0
  65. package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +56 -0
  66. package/templates/nuxt/components/{SimpleAppAutocomplete.vue.eta → simpleApp/pending/SimpleAppAutocomplete.vue} +14 -3
  67. package/templates/nuxt/components/{SimpleAppAutocompletemulti.vue.eta → simpleApp/pending/SimpleAppAutocompletemulti.vue} +1 -1
  68. package/templates/nuxt/components/{SimpleAppCalendar.vue.eta → simpleApp/pending/SimpleAppCalendar.vue} +1 -1
  69. package/templates/nuxt/components/{SimpleAppCheckbox.vue.eta → simpleApp/pending/SimpleAppCheckbox.vue} +1 -1
  70. package/templates/nuxt/components/{SimpleAppChip.vue.eta → simpleApp/pending/SimpleAppChip.vue} +1 -1
  71. package/templates/nuxt/components/{SimpleAppColor.vue.eta → simpleApp/pending/SimpleAppColor.vue} +1 -1
  72. package/templates/nuxt/components/{SimpleAppDocumentNo.vue.eta → simpleApp/pending/SimpleAppDocumentNo.vue} +1 -1
  73. package/templates/nuxt/components/{SimpleAppEditor.vue.eta → simpleApp/pending/SimpleAppEditor.vue} +1 -1
  74. package/templates/nuxt/components/{SimpleAppInputTable.vue.eta → simpleApp/pending/SimpleAppInputTable.vue} +1 -22
  75. package/templates/nuxt/components/{SimpleAppList.vue.eta → simpleApp/pending/SimpleAppList.vue} +1 -1
  76. package/templates/nuxt/components/{SimpleAppListmulti.vue.eta → simpleApp/pending/SimpleAppListmulti.vue} +1 -1
  77. package/templates/nuxt/components/{SimpleAppNumber.vue.eta → simpleApp/pending/SimpleAppNumber.vue} +12 -1
  78. package/templates/nuxt/components/{SimpleAppPassword.vue.eta → simpleApp/pending/SimpleAppPassword.vue} +1 -1
  79. package/templates/nuxt/components/{SimpleAppRadio.vue.eta → simpleApp/pending/SimpleAppRadio.vue} +1 -1
  80. package/templates/nuxt/components/{SimpleAppRating.vue.eta → simpleApp/pending/SimpleAppRating.vue} +1 -1
  81. package/templates/nuxt/components/{SimpleAppSelect.vue.eta → simpleApp/pending/SimpleAppSelect.vue} +12 -2
  82. package/templates/nuxt/components/{SimpleAppSelectmulti.vue.eta → simpleApp/pending/SimpleAppSelectmulti.vue} +1 -1
  83. package/templates/nuxt/components/{SimpleAppSlider.vue.eta → simpleApp/pending/SimpleAppSlider.vue} +1 -1
  84. package/templates/nuxt/components/{SimpleAppSwitch.vue.eta → simpleApp/pending/SimpleAppSwitch.vue} +1 -1
  85. package/templates/nuxt/components/{SimpleAppText.vue.eta → simpleApp/pending/SimpleAppText.vue} +13 -4
  86. package/templates/nuxt/components/{SimpleAppTextarea.vue.eta → simpleApp/pending/SimpleAppTextarea.vue} +13 -2
  87. package/templates/nuxt/components/{SimpleAppDatatable.vue.eta → table/TableDocuments.vue.eta} +15 -63
  88. package/templates/nuxt/components/{UserProfileListItem.vue.eta → user/UserProfileListItem.vue.eta} +1 -1
  89. package/templates/nuxt/composables/getMenus.generate.ts.eta +4 -1
  90. package/templates/nuxt/composables/getOpenApi.generate.ts.eta +32 -1
  91. package/templates/nuxt/composables/goTo.generate.ts.eta +7 -0
  92. package/templates/nuxt/composables/notifications.generate.ts.eta +1 -1
  93. package/templates/nuxt/composables/stringHelper.generate.ts.eta +1 -0
  94. package/templates/nuxt/layouts/default.vue.eta +1 -1
  95. package/templates/nuxt/layouts/documentlist.vue.eta +24 -8
  96. package/templates/nuxt/layouts/sidelist.vue.eta +68 -0
  97. package/templates/nuxt/layouts/sidelistcrud.vue.eta +1 -1
  98. package/templates/nuxt/nuxt.config.ts.eta +0 -1
  99. package/templates/nuxt/pages/[xorg]/branch/index.vue.etax +2 -2
  100. package/templates/nuxt/pages/[xorg]/docnoformat/{[id].vue.eta → [doctype]/[id].vue.eta} +2 -5
  101. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +222 -0
  102. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +33 -0
  103. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +4 -294
  104. package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +100 -0
  105. package/templates/nuxt/pages/[xorg]/organization/[bid].vue.eta +14 -0
  106. package/templates/nuxt/pages/[xorg]/organization/[id]/branches/[bid].vue +13 -0
  107. package/templates/nuxt/pages/[xorg]/organization/[id]/branches/new.vue +149 -0
  108. package/templates/nuxt/pages/[xorg]/organization/[id]/index.vue.eta +1 -0
  109. package/templates/nuxt/pages/[xorg]/organization/new.vue.eta +151 -0
  110. package/templates/nuxt/pages/[xorg]/organization.vue.eta +145 -0
  111. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +23 -23
  112. package/templates/nuxt/pages/[xorg]/user.vue.eta +13 -11
  113. package/templates/nuxt/pages/index.vue._eta +2 -2
  114. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +10 -1
  115. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +1 -1
  116. package/templates/nuxt/types/documentlist.ts.eta +2 -2
  117. package/templates/nuxt/types/index.ts.eta +2 -1
  118. package/templates/nuxt/types/simpleappinput.ts.eta +39 -0
  119. package/templates/project/jsonschemas/category.json._eta +5 -5
  120. package/templates/project/jsonschemas/customer.json._eta +5 -5
  121. package/templates/project/jsonschemas/invoice.json._eta +7 -7
  122. package/templates/project/jsonschemas/product.json._eta +5 -5
  123. package/tsconfig.tsbuildinfo +1 -1
  124. package/templates/nuxt/components/ListView.vue.eta +0 -52
  125. package/templates/nuxt/components/renderers/ForeignKeyRender.vue.eta +0 -10
  126. package/templates/nuxt/composables/getAutocomplete.generate.ts.eta +0 -32
  127. package/templates/nuxt/pages/[xorg]/organization/index.vue.eta +0 -168
  128. /package/templates/nuxt/components/{EventDecision.vue.eta → event/EventDecision.vue.eta} +0 -0
  129. /package/templates/nuxt/components/{ButtonHome.vue.eta → header/button/HeaderButtonHome.vue.eta} +0 -0
  130. /package/templates/nuxt/components/{ButtonLogout.vue.eta → header/button/HeaderButtonLogout.vue.eta} +0 -0
  131. /package/templates/nuxt/components/{ButtonProfile.vue.eta → header/button/HeaderButtonProfile.vue.eta} +0 -0
  132. /package/templates/nuxt/components/{renderers/BooleanRender.vue.eta → renderer/RendererBoolean.vue.eta} +0 -0
  133. /package/templates/nuxt/components/{renderers/DateRender.vue.eta → renderer/RendererDate.vue.eta} +0 -0
  134. /package/templates/nuxt/components/{renderers/MoneyRender.vue.eta → renderer/RendererMoney.vue.eta} +0 -0
  135. /package/templates/nuxt/components/{renderers/MultiTextRender.vue.eta → renderer/RendererMultiText.vue.eta} +0 -0
  136. /package/templates/nuxt/components/{SimpleAppDynamicInput.vue.eta → simpleApp/pending/SimpleAppDynamicInput.vue} +0 -0
  137. /package/templates/nuxt/components/{SimpleAppValue.vue.eta → simpleApp/pending/SimpleAppValue.vue} +0 -0
  138. /package/templates/nuxt/components/{helper.ts.eta → simpleApp/pending/helper.ts-backup} +0 -0
  139. /package/templates/nuxt/components/{type.ts.eta → simpleApp/pending/type.ts-backup} +0 -0
  140. /package/templates/nuxt/components/{CrudNestedDoc.vue.eta → suspended/CrudNestedDoc.vue.eta} +0 -0
  141. /package/templates/nuxt/components/{CrudSimple.vue.eta → suspended/CrudSimple.vue.eta} +0 -0
  142. /package/templates/nuxt/components/{Menus.vue.eta → suspended/Menus.vue.eta} +0 -0
  143. /package/templates/nuxt/components/{Spinner.vue.eta → suspended/Spinner.vue.eta} +0 -0
  144. /package/templates/nuxt/components/{ButtonCreateTenant.vue.eta → user/UserButtonCreateTenant.vue.eta} +0 -0
  145. /package/templates/nuxt/components/{ButtonPermissionInfo.vue.eta → user/UserButtonPermissionInfo.vue.eta} +0 -0
  146. /package/templates/nuxt/components/{Invitation.vue.eta → user/UserInvitation.vue.eta} +0 -0
  147. /package/templates/nuxt/components/{TenantPicker.vue.eta → user/UserTenantPicker.vue.eta} +0 -0
@@ -3,7 +3,7 @@ import {SchemaType,RESTMethods,IsolationType} from '../type'
3
3
  export const branch:SchemaType ={
4
4
  type: "object",
5
5
  "x-simpleapp-config":{
6
- isolationType:IsolationType.tenant,
6
+ isolationType:IsolationType.org,
7
7
  documentType:'branch',
8
8
  documentName:'branch',
9
9
  // pageType:"crud",
@@ -16,8 +16,8 @@ export const branch:SchemaType ={
16
16
  _id:{type:'string'},
17
17
  created:{type:'string'},
18
18
  updated:{type:'string'},
19
- createdby:{type:'string'},
20
- updatedby:{type:'string'},
19
+ createdBy:{type:'string'},
20
+ updatedBy:{type:'string'},
21
21
  tenantId: {type:'integer',default:1,minimum:1 },
22
22
  orgId: {type:'integer',default:1,minimum:1 },
23
23
  branchId: {type:'integer',default:1,minimum:1 },
@@ -3,7 +3,7 @@ import {SchemaType,RESTMethods,IsolationType} from '../type'
3
3
  export const docnoformat:SchemaType ={
4
4
  type: "object",
5
5
  "x-simpleapp-config":{
6
- isolationType:IsolationType.tenant,
6
+ isolationType:IsolationType.org,
7
7
  documentType:'docno',
8
8
  documentName:'docnoformat',
9
9
  pageType:"crud",
@@ -12,8 +12,8 @@ export const docnoformat:SchemaType ={
12
12
  additionalAutoCompleteFields: ['default'],
13
13
  additionalApis:[{
14
14
  "action":"listDocFormats",
15
- "entrypoint":"/listdocformats/:doctype",
16
- "requiredrole":["User"],
15
+ "entryPoint":"/listdocformats/:doctype",
16
+ "requiredRole":["User"],
17
17
  "method":RESTMethods.get,
18
18
  "execute":"listDocFormats",
19
19
  "description":"get list of document format for 1 doctype"
@@ -23,8 +23,8 @@ export const docnoformat:SchemaType ={
23
23
  _id:{type:'string'},
24
24
  created:{type:'string'},
25
25
  updated:{type:'string'},
26
- createdby:{type:'string'},
27
- updatedby:{type:'string'},
26
+ createdBy:{type:'string'},
27
+ updatedBy:{type:'string'},
28
28
  tenantId: {type:'integer',default:1,minimum:1 },
29
29
  orgId: {type:'integer',default:1,minimum:1 },
30
30
  branchId: {type:'integer',default:1,minimum:1 },
@@ -17,8 +17,8 @@ export const organization:SchemaType ={
17
17
  _id:{type:'string'},
18
18
  created:{type:'string'},
19
19
  updated:{type:'string'},
20
- createdby:{type:'string'},
21
- updatedby:{type:'string'},
20
+ createdBy:{type:'string'},
21
+ updatedBy:{type:'string'},
22
22
  tenantId: {type:'integer',default:1,minimum:1 },
23
23
  orgId: {type:'integer',default:1,minimum:1 },
24
24
  branchId: {type:'integer',default:1,minimum:0 },
@@ -26,7 +26,7 @@ export const organization:SchemaType ={
26
26
  orgName: {type: "string",},
27
27
  active: {type: "boolean","default":true,},
28
28
  description: {type: "string",format:"text",},
29
- timezone: {"type": "string","examples": ["Asia/Kuala_Lumpur"]
29
+ timeZone: {"type": "string","examples": ["Asia/Kuala_Lumpur"]
30
30
  }
31
31
  }
32
32
  }
@@ -5,11 +5,11 @@ export const permission:SchemaType ={
5
5
  "x-simpleapp-config":{
6
6
  documentType:'perm',
7
7
  documentName:'permission',
8
- isolationType:IsolationType.tenant,
8
+ isolationType:IsolationType.org,
9
9
  additionalApis:[{
10
10
  action:"listUser",
11
- entrypoint:"listuser",
12
- requiredrole:["SuperAdmin"],
11
+ entryPoint:"listuser",
12
+ requiredRole:["SuperAdmin"],
13
13
  method:RESTMethods.get,
14
14
  execute:"listUser",
15
15
  description:"Get current permissionlist lookup user info"
@@ -19,8 +19,8 @@ export const permission:SchemaType ={
19
19
  _id:{type:'string'},
20
20
  created:{type:'string'},
21
21
  updated:{type:'string'},
22
- createdby:{type:'string'},
23
- updatedby:{type:'string'},
22
+ createdBy:{type:'string'},
23
+ updatedBy:{type:'string'},
24
24
  tenantId: {type:'integer',default:1,minimum:0},
25
25
  orgId: {type:'integer',default:1,minimum:0 },
26
26
  branchId: {type:'integer',default:1,minimum:0 },
@@ -16,8 +16,8 @@ export const tenant:SchemaType ={
16
16
  _id:{type:'string'},
17
17
  created:{type:'string'},
18
18
  updated:{type:'string'},
19
- createdby:{type:'string'},
20
- updatedby:{type:'string'},
19
+ createdBy:{type:'string'},
20
+ updatedBy:{type:'string'},
21
21
  tenantId: {type:'integer',default:1,minimum:0 },
22
22
  orgId: {type:'integer',default:1,minimum:0 },
23
23
  branchId: {type:'integer',default:1,minimum:0 },
@@ -7,8 +7,7 @@ export const user:SchemaType ={
7
7
  documentName:'user',
8
8
  pageType:'crud',
9
9
  isolationType:IsolationType.tenant,
10
- uniqueKey:'email',
11
- uniqueKeys:[['tenantId','uid']],
10
+ uniqueKey:'email',
12
11
  documentTitle:'fullname',
13
12
  requiredRoles:["SuperUser"],
14
13
  additionalAutoCompleteFields:['uid']
@@ -17,13 +16,13 @@ export const user:SchemaType ={
17
16
  _id:{type:'string'},
18
17
  created:{type:'string'},
19
18
  updated:{type:'string'},
20
- createdby:{type:'string'},
21
- updatedby:{type:'string'},
19
+ createdBy:{type:'string'},
20
+ updatedBy:{type:'string'},
22
21
  tenantId: {type:'integer',default:1,minimum:0 },
23
22
  orgId: {type:'integer',default:1,minimum:0 },
24
23
  branchId: {type:'integer',default:1,minimum:0 },
25
24
  uid: {type: "string",},
26
- fullname: {type: "string",minLength:3},
25
+ fullName: {type: "string",minLength:3},
27
26
  email: {type: "string",minLength:10,format: "email"},
28
27
  active: {type: "boolean",default:true},
29
28
  description: {type:"string"},
package/src/generate.ts CHANGED
@@ -255,9 +255,9 @@ const generateSchema = ( docname: string,
255
255
  }
256
256
  }
257
257
  const mapfiles = {
258
- 'pages.crud.vue.eta': {
258
+ 'pages.new.vue.eta': {
259
259
  to:`pages/[xorg]/${docname}`,
260
- as:'crud.vue',
260
+ as:'new.vue',
261
261
  validate: validateWritePage
262
262
  },
263
263
  'pages.[id].vue.eta': {
@@ -15,9 +15,7 @@ import {
15
15
  ChildModels,
16
16
  SchemaModel,
17
17
  TypeForeignKey,
18
- TypeForeignKeyCatalogue,
19
- DocSetting,
20
-
18
+ TypeForeignKeyCatalogue,
21
19
  } from '../type';
22
20
  const log: Logger<ILogObj> = new Logger();
23
21
  const configname = "x-simpleapp-config"
@@ -25,8 +23,8 @@ const FOREIGNKEY_PROPERTY = 'x-foreignkey'
25
23
  const COMPULSORYFIELDS={ _id:{type:'string'},
26
24
  created:{type:'string'},
27
25
  updated:{type:'string'},
28
- createdby:{type:'string'},
29
- updatedby:{type:'string'},
26
+ createdBy:{type:'string'},
27
+ updatedBy:{type:'string'},
30
28
  tenantId: {type:'integer',default:1,minimum:1 },
31
29
  orgId: {type:'integer',default:1,minimum:1 },
32
30
  branchId: {type:'integer',default:1,minimum:1 },
@@ -212,11 +210,11 @@ const genSchema = async (
212
210
  if(!childprops['updated']){
213
211
  childprops['updated']={type:'string',description:'iso8601 or empty'}
214
212
  }
215
- if(!childprops['createdby']){
216
- childprops['createdby']={type:'string'}
213
+ if(!childprops['createdBy']){
214
+ childprops['createdBy']={type:'string'}
217
215
  }
218
- if(!childprops['updatedby']){
219
- childprops['updatedby']={type:'string'}
216
+ if(!childprops['updatedBy']){
217
+ childprops['updatedBy']={type:'string'}
220
218
  }
221
219
  if(!childprops['_id']){
222
220
  childprops['_id']={type:'string'}
@@ -119,8 +119,8 @@ const processObject = (doctype: string,
119
119
  jsondata.properties['doctype'] = {type: 'string', default:doctype, examples: [doctype],description: 'Control value, dont edit it',};
120
120
  jsondata.properties['created'] = {type: 'string',description: 'Control value, dont edit it',};
121
121
  jsondata.properties['updated'] = {type: 'string',description: 'Control value, dont edit it',};
122
- jsondata.properties['createdby'] = {type: 'string',description: 'Control value, dont edit it',};
123
- jsondata.properties['updatedby'] = {type: 'string',description: 'Control value, dont edit it',};
122
+ jsondata.properties['createdBy'] = {type: 'string',description: 'Control value, dont edit it',};
123
+ jsondata.properties['updatedBy'] = {type: 'string',description: 'Control value, dont edit it',};
124
124
 
125
125
  if(doctype !='tenant'){
126
126
  jsondata.properties['tenantId'] = {type: 'number',description: 'Control value, dont edit it',};
@@ -306,11 +306,11 @@ const genSchema = (docname: string,schematype: string,jsondata: JsonSchemaProper
306
306
  if(!childprops['updated']){
307
307
  childprops['updated']={type:'string',description:'iso8601 or empty'}
308
308
  }
309
- if(!childprops['createdby']){
309
+ if(!childprops['createdBy']){
310
310
  childprops['createdby']={type:'string'}
311
311
  }
312
- if(!childprops['updatedby']){
313
- childprops['updatedby']={type:'string'}
312
+ if(!childprops['updatedBy']){
313
+ childprops['updatedBy']={type:'string'}
314
314
  }
315
315
  if(!childprops['_id']){
316
316
  childprops['_id']={type:'string'}
package/src/type.ts CHANGED
@@ -93,19 +93,19 @@ foreignkeys: MyForeignKey
93
93
 
94
94
  }
95
95
 
96
- export type DocSetting = {
97
- docName:string,
98
- docType:string,
99
- colDocNo:string,
100
- colDocLabel:string,
101
- collectionName:string,
102
- autocompleteFields:string[],
103
- docStatusSettings:DocumentStatus[],
104
- apiSettings:DocumentApi[],
105
- // requireautocomplete:boolean
106
- isolationtype:string
107
- foreignkeys: MyForeignKey
108
- }
96
+ // export type DocSetting = {
97
+ // docName:string,
98
+ // docType:string,
99
+ // colDocNo:string,
100
+ // colDocLabel:string,
101
+ // collectionName:string,
102
+ // autoCompleteFields:string[],
103
+ // docStatusSettings:DocumentStatus[],
104
+ // apiSettings:DocumentApi[],
105
+ // // requireautocomplete:boolean
106
+ // isolationType:string
107
+ // foreignKeys: MyForeignKey
108
+ // }
109
109
 
110
110
  export type DocumentStatus = {
111
111
  status:string //'CO', 'V', 'CL', 'D' and etc
@@ -116,9 +116,9 @@ export type DocumentStatus = {
116
116
  export enum RESTMethods {'post'='post','get'='get', 'delete'='delete','put'='put', 'patch'='patch'}
117
117
  export type DocumentApi = {
118
118
  action:string //api action name
119
- entrypoint:string //api entry point example:':id', ':id/confirm'
120
- querypara?:string[] //what query parameter wish to accept, example: ['description','date']
121
- requiredrole?: string[] // what special user role wish to allow for this api, example: ['SuperUser']
119
+ entryPoint:string //api entry point example:':id', ':id/confirm'
120
+ queryPara?:string[] //what query parameter wish to accept, example: ['description','date']
121
+ requiredRole?: string[] // what special user role wish to allow for this api, example: ['SuperUser']
122
122
  method:RESTMethods
123
123
  execute:string, //what service class method name to execute, example: 'ping','getDocumentName'
124
124
  description:string //description of api
@@ -126,8 +126,8 @@ export type DocumentApi = {
126
126
  export enum IsolationType {"none"="none" , "tenant"="tenant","org"="org", "branch"="branch"}
127
127
  // export type ImportLibs = {"lib":string,"as":string}
128
128
  export type Formula = {
129
- "jsonpath":string //example: "$.subtotal","$.details[*]"
130
- "formula":string //example "jslib.getDocumentSubTotal(@F{$.details})"
129
+ jsonPath:string //example: "$.subtotal","$.details[*]"
130
+ formula:string //example "jslib.getDocumentSubTotal(@F{$.details})"
131
131
  }
132
132
 
133
133
  export type SchemaConfig = {
@@ -158,8 +158,8 @@ export type SchemaFields = {
158
158
  branchId: SimpleAppJSONSchema7
159
159
  created: SimpleAppJSONSchema7
160
160
  updated: SimpleAppJSONSchema7
161
- createdby: SimpleAppJSONSchema7
162
- updatedby: SimpleAppJSONSchema7
161
+ createdBy: SimpleAppJSONSchema7
162
+ updatedBy: SimpleAppJSONSchema7
163
163
  [key:string]:SimpleAppJSONSchema7 | SimpleAppJSONSchema7[] | undefined
164
164
 
165
165
  }
@@ -126,17 +126,17 @@ export class <%= it.typename %>Controller extends SimpleAppAbstractController<
126
126
 
127
127
  <% for(let i=0;i<it.apiSettings.length;i++){%>
128
128
  <% let api = it.apiSettings[i] %>
129
- <%~ `@${capitalizeFirstLetter(api.method)}('${api.entrypoint}')`%>
129
+ <%~ `@${capitalizeFirstLetter(api.method)}('${api.entryPoint}')`%>
130
130
  <%if(superadmindoctype.includes(it.doctype)){%>
131
131
  @Roles(Role.SuperAdmin,Role.<%= `${it.typename}_${api.action}`%>,
132
- <%if(api.requiredrole && api.requiredrole.length>0) { %>
133
- <% for(let r=0;r<api.requiredrole.length;r++){%>Role.<%=api.requiredrole[r]%>,<%}%>
132
+ <%if(api.requiredRole && api.requiredRole.length>0) { %>
133
+ <% for(let r=0;r<api.requiredRole.length;r++){%>Role.<%=api.requiredRole[r]%>,<%}%>
134
134
  <%}%>
135
135
  )
136
136
  <%}else{%>
137
137
  @Roles(Role.SuperAdmin,Role.SuperUser,Role.<%= `${it.typename}_${api.action}`%>,
138
- <%if(api.requiredrole && api.requiredrole.length>0) { %>
139
- <% for(let r=0;r<api.requiredrole.length;r++){%>Role.<%=api.requiredrole[r]%>,<%}%>
138
+ <%if(api.requiredRole && api.requiredRole.length>0) { %>
139
+ <% for(let r=0;r<api.requiredRole.length;r++){%>Role.<%=api.requiredRole[r]%>,<%}%>
140
140
  <%}%>
141
141
  )
142
142
  <%}%>
@@ -144,13 +144,13 @@ export class <%= it.typename %>Controller extends SimpleAppAbstractController<
144
144
  @ApiResponse({status: 200,description: '<%=api.description%>' ,type: Object })
145
145
  @ApiResponse({status: 418,description: 'undefine bpmn,setDocumentStatus or bpmn'})
146
146
  @ApiOperation({ operationId: '<%=api.execute ??api.action%>' })
147
- <% if(api.querypara && api.querypara.length>0) {%>
148
- <%for(let q=0;q<api.querypara.length; q++){%>
149
- @ApiQuery({name: "<%=api['querypara'][q]%>",required: false,type: String})
147
+ <% if(api.queryPara && api.queryPara.length>0) {%>
148
+ <%for(let q=0;q<api.queryPara.length; q++){%>
149
+ @ApiQuery({name: "<%=api['queryPara'][q]%>",required: false,type: String})
150
150
  <%}%>
151
151
  <%}%>
152
- async <%=api.execute??api.action %>(@AppUser() appuser: UserContext,@Res() res:Response,<% if(api.entrypoint && api.entrypoint.includes(':')) {%>
153
- <%let subpath = api.entrypoint.split('/')%>
152
+ async <%=api.execute??api.action %>(@AppUser() appuser: UserContext,@Res() res:Response,<% if(api.entryPoint && api.entryPoint.includes(':')) {%>
153
+ <%let subpath = api.entryPoint.split('/')%>
154
154
  <% for(let a=0;a<subpath.length;a++){%>
155
155
  <%const partstr = subpath[a]%>
156
156
  <%if(partstr.includes(':')){%>
@@ -159,16 +159,16 @@ export class <%= it.typename %>Controller extends SimpleAppAbstractController<
159
159
  <%}%>
160
160
  <%}%>
161
161
  <%}%>
162
- <% if(api.querypara && api.querypara.length>0) {%>
163
- <%for(let q=0;q<api.querypara.length; q++){%>
164
- <% const qp = api['querypara'][q] %>
162
+ <% if(api.queryPara && api.queryPara.length>0) {%>
163
+ <%for(let q=0;q<api.queryPara.length; q++){%>
164
+ <% const qp = api['queryPara'][q] %>
165
165
  @Query('<%=qp%>') <%=qp%>: string,
166
166
  <%}%>
167
167
  <%}%>
168
168
  ){
169
169
  <%if(api.execute){%>
170
- const result = await this.service.<%=api.execute%>(appuser,<% if(api.entrypoint && api.entrypoint.includes(':')) {%>
171
- <%let subpath = api.entrypoint.split('/')%>
170
+ const result = await this.service.<%=api.execute%>(appuser,<% if(api.entryPoint && api.entryPoint.includes(':')) {%>
171
+ <%let subpath = api.entryPoint.split('/')%>
172
172
  <% for(let a=0;a<subpath.length;a++){%>
173
173
  <%const partstr = subpath[a]%>
174
174
  <%if(partstr.includes(':')){%>
@@ -177,9 +177,9 @@ export class <%= it.typename %>Controller extends SimpleAppAbstractController<
177
177
  <%}%>
178
178
  <%}%>
179
179
  <%}%>
180
- <% if(api.querypara && api.querypara.length>0) {%>
181
- <%for(let q=0;q<api.querypara.length; q++){%>
182
- <%= api['querypara'][q] %>,
180
+ <% if(api.queryPara && api.queryPara.length>0) {%>
181
+ <%for(let q=0;q<api.queryPara.length; q++){%>
182
+ <%= api['queryPara'][q] %>,
183
183
  <%}%>
184
184
  <%}%>
185
185
  )
@@ -59,7 +59,7 @@ export class <%= it.typename %>Processor extends SimpleAppService<<%= it.typenam
59
59
  // <%~ JSON.stringify(fml) %>
60
60
  //const tmp = jsopbj.query(vdata,fieldpath).filter((item:string)=>item!='')
61
61
 
62
- jsopbj.apply(data, '<%~ fml.jsonpath %>', function(value:any) { return <%~fml.formula %> });
62
+ jsopbj.apply(data, '<%~ fml.jsonPath %>', function(value:any) { return <%~fml.formula %> });
63
63
 
64
64
  <%}) %>
65
65
  <%} %>
@@ -6,7 +6,7 @@
6
6
  * last change 2023-09-09
7
7
  * author: Ks Tan
8
8
  */
9
- import Crud from './crud.vue'
9
+ import Crud from './new.vue'
10
10
  </script>
11
11
  <template>
12
12
  <Crud/>
@@ -6,14 +6,9 @@
6
6
  * last change 2023-09-09
7
7
  * author: Ks Tan
8
8
  */
9
- <% const skipcolumns = ['_id','createdby','created','updatedby','updated','orgId','branchId','tenantId','doctype'] %>
10
- //import {InputTableColumnType,InputTableColumn} from "~/components/type";
11
- import Column from "primevue/column";
12
- import MultiTextRender from '~/components/renderers/MultiTextRender.vue'
13
- import BooleanRender from '~/components/renderers/BooleanRender.vue'
14
- import DateRender from '~/components/renderers/DateRender.vue'
15
- import ForeignKeyRender from '~/components/renderers/ForeignKeyRender.vue'
16
-
9
+ <% const skipcolumns = ['_id','createdBy','created','updatedBy','updated','orgId','branchId','tenantId','doctype'] %>
10
+
11
+ import { CellSetting } from "~/types";
17
12
  const {$<%= it.typename %>Doc } = useNuxtApp();
18
13
  const doc = $<%= it.typename %>Doc()
19
14
  const data = doc.getReactiveData();
@@ -29,13 +24,13 @@ definePageMeta({
29
24
  <%} else if(['string','number','integer'].indexOf(obj.type)>=0){%>'<%=key%>',
30
25
  <%} else if(obj.type =='object' && obj['x-foreignkey'] ){%>
31
26
  {
32
- title:'<%=capitalizeFirstLetter(key)%>',
27
+ title:t('<%=key%>'),
33
28
  field:'<%=key%>',
34
- component:ForeignKeyRender,
35
- componentSetting:{collection:'<%=key%>' }
29
+ rendererName:'RendererForeignKey',
30
+ rendererSetting:{collection:'<%=obj["x-foreignkey"]%>' }
36
31
  },
37
32
  <%}%>
38
- <%})%>],
33
+ <%})%>] as CellSetting[],
39
34
  sorts:[
40
35
  <%if(it.jsonschema['x-simpleapp-config'] && it.jsonschema['x-simpleapp-config']['uniqueKey']){%>
41
36
  ['<%=it.jsonschema['x-simpleapp-config']['uniqueKey']%>','asc'],
@@ -57,19 +52,19 @@ const exitRecord = ()=>{
57
52
  }
58
53
 
59
54
  watch(()=> useRoute().fullPath ,(newvalue,oldvalue)=>{
60
- visible.value = useRoute().params.id ? true : false
55
+ visible.value = useRoute().params.id || useRoute().fullPath.includes("/new") ? true : false;
61
56
  })
62
57
 
63
58
  onNuxtReady(()=>{
64
- visible.value = useRoute().params.id ? true : false;
59
+ visible.value = useRoute().params.id || useRoute().fullPath.includes('/new') ? true : false;
65
60
  })
66
61
  </script>
67
62
  <template>
68
63
  <div>
69
- <Button class="bg-primary-600 hover:bg-primary-400 text-white" v-if="canPerform(String(useRoute().meta.name),'create')" @click="newData">New</Button>
64
+ <Button class="btn btn-primary" v-if="canPerform(String(useRoute().meta.name),'create')" @click="newData">New</Button>
70
65
  <Dialog v-model:visible="visible"
71
- :pt="{root:{class:'w-full h-full bg-white'}}"
72
- modal :header="doc.getDocName()"
66
+ :pt="{ root: { class: 'w-full h-full bg-white' } , headertitle:{class:'m-2 ml-6 text-2xl font-bold'}}"
67
+ modal :header="t(doc.getDocName())"
73
68
  :autoZIndex="false"
74
69
  @update:visible="exitRecord"
75
70
  >