@simitgroup/simpleapp-generator 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -58,6 +58,13 @@ Development using simpleapp-generator involve below steps:
58
58
  5. repeat same typscript formula at frontend and backend
59
59
 
60
60
 
61
+ # JSON Schema supported String Format
62
+ 1. all format recognize by ajv
63
+ 2. x-document-no : string, apply minLength:1, will auto apply uniquekey in mongodb
64
+ 3. x-document-name: string, apply minLength:1
65
+ 4. tel: only digit, auto generate input tel
66
+ 5. x-text: do nothing, will auto generate textarea
67
+ 6. x-autocomplete-field: this field will add into autocomplete
61
68
  # Todo
62
69
  ## Update documentation and reference
63
70
  1. create github simpleapp-generator-template and documentation
@@ -66,33 +73,58 @@ Development using simpleapp-generator involve below steps:
66
73
 
67
74
 
68
75
  ## high priority Job
69
- x1. auto pretty backend and frontend
70
- x2. fix pages:id issue
71
- x3. search at backend
72
- 1. remain codes after regenerate (frontend)
73
- x - pages
74
- x - composable (no need )
76
+ 3. settle instancePath in form
77
+ x17. auto add source code for addarray item
78
+
79
+ no auto logout after session expired, or auto renew token
75
80
  - menulist ** less priority, can customize manually
76
- 1. remain codes after regenerate (backend)
77
- x - service
78
- x - schema
79
- x - controller
81
+ 2. tidy up error at frontend/backend messages
82
+ 10.auto bind apiclient methods to compatible with openapi methods
83
+ a. create backend service method
84
+ b. create controller handle
85
+ 11.add simple and consistent external hook in service class.
86
+ 16. support table details in generator
87
+ a. render autocomplete readonly field
88
+ b. add popup dialog for edit table
89
+ c. separate list table and form table
90
+ d.
80
91
  5. tenant setting
81
92
  6. user management
82
- 2. tidy up error at frontend/backend messages
83
- 3. settle instancePath in form
84
93
  5. security of string input, block xss
85
- x6. fill in data for tenant/org/branch created,updated,createdby,updatedby
86
- 7. update record need replace updated,updatedby, line item also need headache
87
- x8. block uniquekey
94
+ 12.add pusher listener in apiclient also
95
+ 13.have way to create more api using different openapi schema but on same object
96
+ 18. add transaction screen templates
97
+
88
98
 
89
99
  ## Lower Priority
90
100
  3. multi-lingual
91
101
  6. audit trails
92
102
  7. permissions
103
+ 7. update record need replace updated,updatedby, line item also need headache
104
+
105
+ 11.frontend add parent/child ui for invoices
106
+
107
+ [done]
108
+ xauto index x-document-name
93
109
  x8. jwt
110
+ ximprove tel control to allow empty string
111
+ x15. some autocomplete wish to allow additional column like 6% tax, now become additional fields
94
112
  x9. frontend authentication
95
- 11.frontend add parent/child ui for invoices
113
+ x1. auto pretty backend and frontend
114
+ x2. fix pages:id issue
115
+ x3. search at backend
116
+ 1. remain codes after regenerate (backend)
117
+ x - service
118
+ x - schema
119
+ x - controller
120
+ x8. block uniquekey
121
+ 1. remain codes after regenerate (frontend)
122
+ x - pages
123
+ x - composable (no need )
124
+ x6. fill in data for tenant/org/branch created,updated,createdby,updatedby
125
+ 14. force x-document-no/name is required
126
+
127
+
96
128
 
97
129
  ## Bug fix
98
130
  1. Openapi some schema like primarykey/more not generated, cause error in ide
package/dist/framework.js CHANGED
@@ -89,7 +89,7 @@ const prepareNest = (callback) => {
89
89
  const targetfolder = config.backendFolder;
90
90
  log.info(`creating backend project ${targetfolder}`);
91
91
  if (!fs_1.default.existsSync(`${targetfolder}/.env`)) {
92
- (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save nest-keycloak-connect keycloak-connect @nestjs/serve-static jsonwebtoken axios @darkwolf/base64url json-schema @wearenova/mongoose-tenant @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`, async (error, stdout, stderr) => {
92
+ (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save nest-keycloak-connect keycloak-connect @nestjs/serve-static jsonwebtoken axios @darkwolf/base64url json-schema @wearenova/mongoose-tenant @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats ajv-errors @nestjs/config`, async (error, stdout, stderr) => {
93
93
  // log.info(`dependency installed`)
94
94
  if (!error) {
95
95
  fs_1.default.mkdirSync(`${targetfolder}/public_html`, { recursive: true });
@@ -129,7 +129,7 @@ const prepareNuxt = (callback) => {
129
129
  (0, child_process_1.exec)(`cd ${targetfolder};pnpm install;pnpm install -D @sidebase/nuxt-auth @nuxt/ui @types/node @vueuse/nuxt @sidebase/nuxt-auth @vueuse/core nuxt-security prettier `, (error, stdout, stderr) => {
130
130
  //;pnpm install
131
131
  console.log(error, stdout, stderr);
132
- (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save next-auth@4.21.1 @darkwolf/base64url @nuxt/ui ajv dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
132
+ (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save next-auth@4.21.1 @darkwolf/base64url @nuxt/ui ajv ajv-formats ajv-errors dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
133
133
  console.log(error, stdout, stderr);
134
134
  fs_1.default.mkdirSync(`${targetfolder}/assets/css/`, { recursive: true });
135
135
  fs_1.default.mkdirSync(`${targetfolder}/layouts`, { recursive: true });
@@ -184,7 +184,7 @@ const prettyNuxt = () => {
184
184
  };
185
185
  exports.prettyNuxt = prettyNuxt;
186
186
  const prettyNest = () => {
187
- (0, child_process_1.exec)(`cd ${config.backendFolder};npm run format`);
187
+ (0, child_process_1.exec)(`cd ${config.backendFolder};npm run format;npx prettier --write src/dicts/foreignkeys.json`);
188
188
  };
189
189
  exports.prettyNest = prettyNest;
190
190
  const prepareOpenApiClient = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"framework.js","sourceRoot":"","sources":["../src/framework.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAmB;AACnB,iDAAwC;AACxC,iCAAwC;AACxC,sDAAuC;AACvC,6BAA0B;AAC1B,MAAM,GAAG,GAAoB,IAAI,cAAM,EAAE,CAAC;AAE1C,IAAI,MAAM,GAAG;IACT,mBAAmB,EAAC,eAAe;IACnC,eAAe,EAAC,aAAa;IAC7B,aAAa,EAAC,MAAM;IACpB,iBAAiB,EAAC,kEAAkE;IACpF,gBAAgB,EAAC,cAAc;IAC/B,cAAc,EAAC,MAAM;IACrB,cAAc,EAAC,iBAAiB;IAChC,iBAAiB,EAAC;QACd,gBAAgB,EAAC,8BAA8B;QAC/C,cAAc,EAAC,YAAY;QAC3B,kBAAkB,EAAC,+CAA+C;QAClE,iBAAiB,EAAC,WAAW;QAC7B,qBAAqB,EAAC,qBAAqB;QAC3C,iBAAiB,EAAC,WAAW;KAChC;CACJ,CAAA;AAEM,MAAM,gBAAgB,GAAC,CAAC,UAAU,EAAC,EAAE;IACxC,MAAM,GAAC,UAAU,CAAA;AACrB,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B;AACD,2BAA2B;AACpB,MAAM,aAAa,GAAE,CAAC,QAAiB,EAAE,EAAE;IAC9C,MAAM,aAAa,GAAC,MAAM,CAAC,aAAa,CAAA;IACxC,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAC;QAC7B,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAE,aAAa,EAAE,qCAAqC,EAAE,MAAM,CAAC,EAC/F,EAAG,KAAK,EAAE,SAAS,GAAE,CAAC,CAAA;QACtC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAC,CAAC,QAAQ,EAAC,EAAE;YACzB,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,MAAM,EAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAC,EAAG,KAAK,EAAE,SAAS,EAAC,CAAC,CAAA;YACtF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAC,CAAC,QAAQ,EAAC,EAAE;gBAC1B,QAAQ,EAAE,CAAA;YACd,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;KACL;SAAI;QACD,QAAQ,EAAE,CAAA;KACb;AACL,CAAC,CAAA;AAdY,QAAA,aAAa,iBAczB;AACD,2BAA2B;AACpB,MAAM,aAAa,GAAG,CAAC,QAAiB,EAAE,EAAE;IAC/C,MAAM,cAAc,GAAC,MAAM,CAAC,cAAc,CAAA;IAC1C,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAC,CAAC,aAAa,EAAC,MAAM,EAAC,cAAc,CAAC,EAAC,EAAG,KAAK,EAAE,SAAS,GAAE,CAAC,CAAA;QACvF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAC,CAAC,QAAQ,EAAC,EAAE;YAC1B,QAAQ,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;KACL;SAAI;QACD,QAAQ,EAAE,CAAA;KACb;AACL,CAAC,CAAA;AAVY,QAAA,aAAa,iBAUzB;AAEM,MAAM,WAAW,GAAG,CAAC,QAAiB,EAAC,EAAE;IAC5C,MAAM,YAAY,GAAE,MAAM,CAAC,aAAa,CAAA;IACxC,GAAG,CAAC,IAAI,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAA;IACpD,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,YAAY,OAAO,CAAC,EAAC;QAGtC,IAAA,oBAAI,EAAC,MAAM,YAAY,0OAA0O,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE;YAC7R,mCAAmC;YACnC,IAAG,CAAC,KAAK,EAAC;gBACN,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,cAAc,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAC5D,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAC,MAAM,CAAA;gBACtB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;gBAC9D,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;gBAE5E,YAAE,CAAC,aAAa,CAAC,GAAG,YAAY,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjD,YAAE,CAAC,aAAa,CAAC,GAAG,YAAY,cAAc,EAAE,OAAO,CAAC,CAAC;gBACzD,YAAE,CAAC,aAAa,CAAC,GAAG,YAAY,mCAAmC,EAAE,eAAe,CAAC,CAAC;gBACtF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,GAAC,GAAG,GAAC,GAAG,YAAY,gBAAgB,CAAA;gBACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;gBACtC,QAAQ,CAAC,eAAe,CAAC,eAAe,GAAC,IAAI,CAAA;gBAC7C,QAAQ,CAAC,eAAe,CAAC,iBAAiB,GAAC,IAAI,CAAA;gBAC/C,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAEzD,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBAClC,QAAQ,EAAE,CAAA;aAEb;iBAAK;gBACN,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACjB,MAAM,KAAK,CAAA;aACV;QACL,CAAC,CAAC,CAAA;KACL;SAAI;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,2CAA2C,CAAC,CAAA;QACpE,QAAQ,EAAE,CAAA;KACb;AACL,CAAC,CAAA;AArCY,QAAA,WAAW,eAqCvB;AACD,8CAA8C;AACvC,MAAM,WAAW,GAAG,CAAC,QAAiB,EAAC,EAAE;IAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAA;IAC1C,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,YAAY,OAAO,CAAC,EAAC;QACtC,mCAAmC;QACnC,IAAA,oBAAI,EAAC,MAAM,YAAY,8IAA8I,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE;YAC5L,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;YAC9B,IAAA,oBAAI,EAAC,MAAM,YAAY,qPAAqP,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE;gBACvS,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAElC,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,cAAc,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAC5D,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,UAAU,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBACxD,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,aAAa,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAC3D,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,oBAAoB,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAClE,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,kBAAkB,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAChE,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,eAAe,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBAC7D,YAAE,CAAC,SAAS,CAAC,GAAG,YAAY,UAAU,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAA;gBACxD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,EAAC,KAAK,EAAE,GAAG,SAAS,CAAC,WAAW,OAAO,EAAC,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAC,MAAM,CAAA;gBACtB,MAAM,MAAM,GAAG;oBACX,eAAe,EAAC,SAAS;oBACzB,mCAAmC,EAAC,6BAA6B;oBACjE,4BAA4B,EAAC,sBAAsB;oBACnD,iCAAiC,EAAC,2BAA2B;oBAC7D,mCAAmC,EAAC,kCAAkC;oBACtE,2BAA2B,EAAC,qBAAqB;oBACjD,qBAAqB,EAAC,4BAA4B;oBAClD,iCAAiC,EAAC,2BAA2B;oBAC7D,+BAA+B,EAAC,0BAA0B;oBAC1D,sBAAsB,EAAC,gBAAgB;oBACvC,uBAAuB,EAAC,iBAAiB;oBACzC,8BAA8B,EAAC,wBAAwB;oBACvD,uBAAuB,EAAC,iBAAiB;oBACzC,4BAA4B,EAAC,sBAAsB;oBACnD,0BAA0B,EAAC,oBAAoB;oBAC/C,oBAAoB,EAAC,yBAAyB;oBAC9C,WAAW,EAAC,MAAM;iBACrB,CAAA;gBAED,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;gBACpD,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;oBAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;oBAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACjC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC5C,MAAM,IAAI,GAAE,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAA;oBACzC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAC,IAAI,CAAC,CAAA;oBACzB,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBAC/B;gBAED,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBAClC,QAAQ,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QAEN,CAAC,CAAC,CAAA;KACT;SAAI;QACD,0BAA0B;QAC1B,QAAQ,EAAE,CAAA;KACb;AACL,CAAC,CAAA;AA1DY,QAAA,WAAW,eA0DvB;AAEM,MAAM,UAAU,GAAG,GAAE,EAAE;IAC1B,IAAA,oBAAI,EAAC,MAAM,MAAM,CAAC,cAAc,8DAA8D,CAAC,CAAA;AAEnG,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AACM,MAAM,UAAU,GAAG,GAAE,EAAE;IAC1B,IAAA,oBAAI,EAAC,MAAM,MAAM,CAAC,aAAa,iBAAiB,CAAC,CAAA;AACrD,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAEM,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACrC,IAAA,oBAAI,EAAC,qCAAqC,MAAM,CAAC,YAAY,OAAO,MAAM,CAAC,cAAc,6DAA6D,CAAC,CAAA;AAC3J,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC"}
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../src/framework.ts"],"names":[],"mappings":"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"}
package/dist/generate.js CHANGED
@@ -46,19 +46,20 @@ const initialize = async (defFolder, backendfolder, frontendfolder, callback) =>
46
46
  let activatemodules = [];
47
47
  //
48
48
  const files = (0, fs_1.readdirSync)(defFolder);
49
+ // log.warn("all schemas:",files)
49
50
  // readdir(defFolder, (err, files) => {
50
51
  // files.forEach((file) => {
51
52
  for (let j = 0; j < files.length; j++) {
52
53
  const file = files[j];
54
+ log.info(`Load ` + clc.green(file));
53
55
  const filearr = file.split('.');
54
56
  let rendertype = 'basic';
55
57
  const docname = filearr[0].toLowerCase();
56
58
  const doctype = filearr[1].toLowerCase();
57
59
  const jsonstring = (0, fs_1.readFileSync)(defFolder + path.sep + file, 'utf-8');
58
- const jsondata = JSON.parse(jsonstring);
59
60
  let allmodels = {};
60
61
  if (file.endsWith(extjsonschema)) {
61
- log.info(`Load ` + clc.green(file));
62
+ const jsondata = JSON.parse(jsonstring);
62
63
  rendertype = 'basic';
63
64
  jsonschemas[docname] = jsondata;
64
65
  // foreignkeys:
@@ -105,6 +106,7 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
105
106
  models: allmodels,
106
107
  autocompletecode: allmodels[capitalizeFirstLetter(docname)].codeField,
107
108
  autocompletename: allmodels[capitalizeFirstLetter(docname)].nameField,
109
+ moreAutoComplete: allmodels[capitalizeFirstLetter(docname)].moreAutoComplete,
108
110
  schema: allmodels[capitalizeFirstLetter(docname)].model,
109
111
  apiSchemaName: capitalizeFirstLetter(docname),
110
112
  typename: capitalizeFirstLetter(docname),
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -13,14 +13,18 @@ const type_1 = require("../type");
13
13
  const log = new tslog_1.Logger();
14
14
  const X_DOCUMENT_NO = 'x-document-no';
15
15
  const X_DOCUMENT_NAME = 'x-document-name';
16
+ const X_AUTOCOMPLETE_FIELD = 'x-autocomplete-field';
16
17
  const FOREIGNKEY_PROPERTY = 'x-foreignkey';
18
+ const X_TEL_NO = 'x-tel';
17
19
  let allmodels = {};
18
20
  let fullschema = {};
19
21
  let fieldAutoCompleteCode = '';
20
22
  let fieldAutoCompleteName = '';
23
+ let moreAutoComplete = [];
21
24
  const readJsonSchemaBuilder = async (doctype, docname, orijsondata, allforeignkeys) => {
22
25
  fieldAutoCompleteCode = '';
23
26
  fieldAutoCompleteName = '';
27
+ moreAutoComplete = [];
24
28
  allmodels = {};
25
29
  const validateddata = Object.assign({}, orijsondata);
26
30
  let schema;
@@ -67,7 +71,7 @@ const processObject = (doctype, docname, jsondata) => {
67
71
  };
68
72
  const genSchema = (docname, schematype, jsondata, //JSONSchema7,//|JsonSchemaProperties|JSONSchema7Definition,
69
73
  requiredlist) => {
70
- var _a, _b;
74
+ var _a, _b, _c, _d;
71
75
  const newmodel = {};
72
76
  const props = Object.getOwnPropertyNames(jsondata !== null && jsondata !== void 0 ? jsondata : {});
73
77
  // console.log('==== jsondata', jsondata);
@@ -82,10 +86,20 @@ requiredlist) => {
82
86
  const newName = docname + (0, libs_1.capitalizeFirstLetter)(key);
83
87
  if (obj.format && obj.format == X_DOCUMENT_NO) {
84
88
  fieldAutoCompleteCode = key;
89
+ obj.minLength = (_a = obj.minLength) !== null && _a !== void 0 ? _a : 1;
90
+ jsondata[key]['minLength'] = obj.minLength;
85
91
  }
86
92
  if (obj.format && obj.format == X_DOCUMENT_NAME) {
87
93
  fieldAutoCompleteName = key;
94
+ obj.minLength = (_b = obj.minLength) !== null && _b !== void 0 ? _b : 1;
95
+ jsondata[key]['minLength'] = obj.minLength;
88
96
  }
97
+ if (obj[X_AUTOCOMPLETE_FIELD]) {
98
+ moreAutoComplete.push(key);
99
+ }
100
+ // if(obj.format && obj.format==X_TEL_NO){
101
+ // obj.pattern=obj.pattern ?? '/^\d{7,15}$/gm'
102
+ // }
89
103
  // if (obj.type == 'object' && obj.items ){
90
104
  // console.log("Refer to another object",docname,': ',key,obj,obj.items)
91
105
  // obj,obj.items
@@ -99,12 +113,15 @@ requiredlist) => {
99
113
  // console.warn("FOREIGNKEY_PROPERTY exists",FOREIGNKEY_PROPERTY,obj[FOREIGNKEY_PROPERTY])
100
114
  const masterdatacollection = obj[FOREIGNKEY_PROPERTY];
101
115
  const clientdatacollection = docname.toLowerCase();
102
- const foreignkeyidentity = key + '._id';
116
+ const foreignkeyidentity = key;
103
117
  if (!storage_1.foreignkeys[masterdatacollection]) {
104
118
  let tmp = {};
105
119
  tmp[clientdatacollection] = [foreignkeyidentity];
106
120
  storage_1.foreignkeys[masterdatacollection] = tmp;
107
121
  }
122
+ else if (!storage_1.foreignkeys[masterdatacollection][clientdatacollection]) {
123
+ storage_1.foreignkeys[masterdatacollection][clientdatacollection] = [foreignkeyidentity];
124
+ }
108
125
  else {
109
126
  storage_1.foreignkeys[masterdatacollection][clientdatacollection].push(foreignkeyidentity);
110
127
  }
@@ -121,7 +138,7 @@ requiredlist) => {
121
138
  else if (obj.type == 'array' && (objectitem === null || objectitem === void 0 ? void 0 : objectitem.type) != 'object') {
122
139
  //array need submodel
123
140
  // genSchema(newName, obj.type, obj.items.properties);
124
- const objecttype = (_b = (_a = objectitem.type) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : 'string';
141
+ const objecttype = (_d = (_c = objectitem.type) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : 'string';
125
142
  newmodel[key] = [objecttype];
126
143
  }
127
144
  else {
@@ -129,7 +146,7 @@ requiredlist) => {
129
146
  // console.log(key,'--------newmodel',obj, newmodel[key]);
130
147
  }
131
148
  }
132
- allmodels[docname] = { type: schematype, model: newmodel, codeField: fieldAutoCompleteCode, nameField: fieldAutoCompleteName };
149
+ allmodels[docname] = { type: schematype, model: newmodel, codeField: fieldAutoCompleteCode, nameField: fieldAutoCompleteName, moreAutoComplete: moreAutoComplete };
133
150
  return newmodel;
134
151
  };
135
152
  const getField = (fieldname, obj, isrequired) => {
@@ -1 +1 @@
1
- {"version":3,"file":"jsonschemabuilder.js","sourceRoot":"","sources":["../../src/processors/jsonschemabuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonschemabuilder.js","sourceRoot":"","sources":["../../src/processors/jsonschemabuilder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "1.0.29",
3
+ "version": "1.0.31",
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
@@ -61,7 +61,7 @@ export const prepareNest = (callback:Function)=>{
61
61
  if(!fs.existsSync(`${targetfolder}/.env`)){
62
62
 
63
63
 
64
- exec(`cd ${targetfolder};pnpm install --save nest-keycloak-connect keycloak-connect @nestjs/serve-static jsonwebtoken axios @darkwolf/base64url json-schema @wearenova/mongoose-tenant @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`,async (error, stdout, stderr)=>{
64
+ exec(`cd ${targetfolder};pnpm install --save nest-keycloak-connect keycloak-connect @nestjs/serve-static jsonwebtoken axios @darkwolf/base64url json-schema @wearenova/mongoose-tenant @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats ajv-errors @nestjs/config`,async (error, stdout, stderr)=>{
65
65
  // log.info(`dependency installed`)
66
66
  if(!error){
67
67
  fs.mkdirSync(`${targetfolder}/public_html`,{recursive:true})
@@ -101,7 +101,7 @@ export const prepareNuxt = (callback:Function)=>{
101
101
  exec(`cd ${targetfolder};pnpm install;pnpm install -D @sidebase/nuxt-auth @nuxt/ui @types/node @vueuse/nuxt @sidebase/nuxt-auth @vueuse/core nuxt-security prettier `, (error, stdout, stderr)=>{
102
102
  //;pnpm install
103
103
  console.log(error, stdout, stderr)
104
- exec(`cd ${targetfolder};pnpm install --save next-auth@4.21.1 @darkwolf/base64url @nuxt/ui ajv dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr)=>{
104
+ exec(`cd ${targetfolder};pnpm install --save next-auth@4.21.1 @darkwolf/base64url @nuxt/ui ajv ajv-formats ajv-errors dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr)=>{
105
105
  console.log(error, stdout, stderr)
106
106
 
107
107
  fs.mkdirSync(`${targetfolder}/assets/css/`,{recursive:true})
@@ -159,7 +159,7 @@ export const prettyNuxt = ()=>{
159
159
 
160
160
  }
161
161
  export const prettyNest = ()=>{
162
- exec(`cd ${config.backendFolder};npm run format`)
162
+ exec(`cd ${config.backendFolder};npm run format;npx prettier --write src/dicts/foreignkeys.json`)
163
163
  }
164
164
 
165
165
  export const prepareOpenApiClient = () => {
package/src/generate.ts CHANGED
@@ -26,20 +26,21 @@ export const initialize = async (defFolder:string,backendfolder:string,frontend
26
26
  let activatemodules:ModuleObject[]=[]
27
27
  //
28
28
  const files = readdirSync(defFolder)
29
+ // log.warn("all schemas:",files)
29
30
  // readdir(defFolder, (err, files) => {
30
31
  // files.forEach((file) => {
31
32
  for(let j = 0; j< files.length;j++){
32
33
  const file = files[j]
34
+ log.info(`Load `+clc.green(file))
33
35
  const filearr = file.split('.');
34
36
  let rendertype = 'basic';
35
37
  const docname = filearr[0].toLowerCase();
36
38
  const doctype = filearr[1].toLowerCase();
37
- const jsonstring = readFileSync(defFolder +path.sep+ file, 'utf-8');
38
- const jsondata = JSON.parse(jsonstring);
39
+ const jsonstring = readFileSync(defFolder +path.sep+ file, 'utf-8');
39
40
  let allmodels: ChildModels = {} as ChildModels;
40
41
 
41
- if (file.endsWith(extjsonschema)) {
42
- log.info(`Load `+clc.green(file))
42
+ if (file.endsWith(extjsonschema)) {
43
+ const jsondata = JSON.parse(jsonstring);
43
44
  rendertype = 'basic';
44
45
  jsonschemas[docname] = jsondata;
45
46
  // foreignkeys:
@@ -96,6 +97,7 @@ const generate = (
96
97
  models: allmodels,
97
98
  autocompletecode:allmodels[capitalizeFirstLetter(docname)].codeField,
98
99
  autocompletename:allmodels[capitalizeFirstLetter(docname)].nameField,
100
+ moreAutoComplete:allmodels[capitalizeFirstLetter(docname)].moreAutoComplete,
99
101
  schema: allmodels[capitalizeFirstLetter(docname)].model,
100
102
  apiSchemaName: capitalizeFirstLetter(docname), //capitalizeFirstLetter(doctype) + 'ApiSchema',
101
103
  typename: capitalizeFirstLetter(docname),
@@ -19,12 +19,15 @@ import { json } from 'stream/consumers';
19
19
  const log: Logger<ILogObj> = new Logger();
20
20
  const X_DOCUMENT_NO='x-document-no'
21
21
  const X_DOCUMENT_NAME='x-document-name'
22
+ const X_AUTOCOMPLETE_FIELD='x-autocomplete-field'
22
23
  const FOREIGNKEY_PROPERTY='x-foreignkey'
24
+
25
+ const X_TEL_NO='x-tel'
23
26
  let allmodels: ChildModels = {};
24
27
  let fullschema={}
25
28
  let fieldAutoCompleteCode=''
26
29
  let fieldAutoCompleteName=''
27
-
30
+ let moreAutoComplete:string[]=[]
28
31
  export const readJsonSchemaBuilder = async (
29
32
  doctype: string,
30
33
  docname: string,
@@ -34,6 +37,7 @@ export const readJsonSchemaBuilder = async (
34
37
 
35
38
  fieldAutoCompleteCode=''
36
39
  fieldAutoCompleteName=''
40
+ moreAutoComplete=[]
37
41
  allmodels = {};
38
42
  const validateddata: JSONSchema7 = { ...orijsondata };
39
43
  let schema: SchemaModel | SchemaModel[];
@@ -113,10 +117,21 @@ const genSchema = (
113
117
  const newName: string = docname + capitalizeFirstLetter(key);
114
118
  if(obj.format && obj.format==X_DOCUMENT_NO){
115
119
  fieldAutoCompleteCode=key
120
+ obj.minLength=obj.minLength??1
121
+ jsondata[key]['minLength']=obj.minLength
116
122
  }
117
123
  if(obj.format && obj.format==X_DOCUMENT_NAME){
118
124
  fieldAutoCompleteName=key
125
+ obj.minLength=obj.minLength??1
126
+ jsondata[key]['minLength']=obj.minLength
127
+ }
128
+ if(obj[X_AUTOCOMPLETE_FIELD]){
129
+ moreAutoComplete.push(key)
119
130
  }
131
+
132
+ // if(obj.format && obj.format==X_TEL_NO){
133
+ // obj.pattern=obj.pattern ?? '/^\d{7,15}$/gm'
134
+ // }
120
135
  // if (obj.type == 'object' && obj.items ){
121
136
  // console.log("Refer to another object",docname,': ',key,obj,obj.items)
122
137
 
@@ -132,11 +147,14 @@ const genSchema = (
132
147
  // console.warn("FOREIGNKEY_PROPERTY exists",FOREIGNKEY_PROPERTY,obj[FOREIGNKEY_PROPERTY])
133
148
  const masterdatacollection = obj[FOREIGNKEY_PROPERTY]
134
149
  const clientdatacollection = docname.toLowerCase()
135
- const foreignkeyidentity= key+'._id'
150
+ const foreignkeyidentity= key
136
151
  if(!foreignkeys[masterdatacollection]){
137
152
  let tmp:TypeForeignKey = {} as TypeForeignKey
138
153
  tmp[clientdatacollection]=[foreignkeyidentity]
139
154
  foreignkeys[masterdatacollection] = tmp
155
+ }
156
+ else if(!foreignkeys[masterdatacollection][clientdatacollection]){
157
+ foreignkeys[masterdatacollection][clientdatacollection]=[foreignkeyidentity]
140
158
  }else{
141
159
  foreignkeys[masterdatacollection][clientdatacollection].push(foreignkeyidentity)
142
160
  }
@@ -159,7 +177,7 @@ const genSchema = (
159
177
  // console.log(key,'--------newmodel',obj, newmodel[key]);
160
178
  }
161
179
  }
162
- allmodels[docname] = { type: schematype, model: newmodel,codeField: fieldAutoCompleteCode ,nameField: fieldAutoCompleteName };
180
+ allmodels[docname] = { type: schematype, model: newmodel,codeField: fieldAutoCompleteCode ,nameField: fieldAutoCompleteName,moreAutoComplete:moreAutoComplete };
163
181
  return newmodel;
164
182
  };
165
183
 
package/src/type.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { JSONSchema7, JSONSchema7Definition } from 'json-schema';
2
2
  export type ChildModels = {
3
- [key: string]: { type: string; model: SchemaModel,codeField:string,nameField:string };
3
+ [key: string]: { type: string; model: SchemaModel,codeField:string,nameField:string,moreAutoComplete:string[] };
4
4
  };
5
5
  export enum Fieldtypes {
6
6
  'string' = 'string',
@@ -51,6 +51,7 @@ doctype: string
51
51
  models: ChildModels
52
52
  autocompletecode:string
53
53
  autocompletename:string
54
+ moreAutoComplete:string[]
54
55
  schema: SchemaModel
55
56
  apiSchemaName: string
56
57
  typename: string
@@ -29,4 +29,6 @@ const schemasetting = {
29
29
  };
30
30
 
31
31
  export const <%= it.doctype %>MongoSchema = new Schema(schemasetting,{collection: '<%= it.name %>'})
32
- .index({<%=it.autocompletecode%>:1,orgId:1},{unique:true});
32
+ .index({<%=it.autocompletecode%>:1,orgId:1},{unique:true})
33
+ .index({<%=it.autocompletename%>:1,orgId:1});
34
+
@@ -9,9 +9,11 @@
9
9
  <% let skipcolumns = ['_id','createdby','created','updatedby','updated','orgId','branchId','tenantId','doctype'] %>
10
10
 
11
11
  import { <%= it.typename %>Doc } from "../../../simpleapp/simpleappdocs/<%= it.typename %>Doc";
12
+ import SimpleAppDatatable from "@simitgroup/simpleapp-vue-component/src/components/SimpleAppDatatable.vue";
13
+ import {InputTableColumnType,InputTableColumn} from "@simitgroup/simpleapp-vue-component/src/type";
12
14
  const { $event, $listen } = useNuxtApp();
13
15
  const route = useRoute()
14
- const doc = new <%= it.typename %>Doc(route.params.xorg,$event, $listen);
16
+ const doc = new <%= it.typename %>Doc(route.params.xorg.toString(),$event, $listen);
15
17
  const documentpath = `/${route.params.xorg}/<%= it.name %>`;
16
18
  const data = doc.getReactiveData();
17
19
  const columns = [
@@ -21,6 +23,20 @@
21
23
  <%} else if(['string','number','integer'].indexOf(obj.type)>=0){%>'<%=key%>',<%}%>
22
24
  <%})%>
23
25
  ]
26
+ //prepare subtable if exists
27
+ <%Object.keys(it.jsonschema.properties).forEach(function(key) { %>
28
+ <% let obj=it.jsonschema.properties[key] %>
29
+
30
+ <% if(obj.type=='array' && obj.items.type=='object' && obj.items['properties']){ %>
31
+ <%let tablefields = Object.keys(obj.items.properties) %>
32
+ const <%=it.name%>_<%=key%> :InputTableColumn[] = [
33
+ <% for(let a=0;a<tablefields.length;a++){%>
34
+ {type:InputTableColumnType.field, field:'<%= tablefields[a] %>',style:'width:10%'},
35
+ <%}%>
36
+ ]
37
+ <%}%>
38
+ <%})%>
39
+
24
40
  </script>
25
41
  <template>
26
42
  <div>
@@ -39,7 +55,7 @@
39
55
  <% } else if(obj.type=='array' && obj.items && obj.items.type =='string' ){ %>
40
56
  <SimpleAppChip autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
41
57
  <% } else if(obj.type=='object' && typeof obj['x-foreignkey']!='undefined'){ %>
42
- <SimpleAppAutocomplete autofocus :setting="o.getField('#/properties/<%= key %>')"
58
+ <SimpleAppAutocomplete :getAutocomplete="getAutocomplete" :setting="o.getField('#/properties/<%= key %>')"
43
59
  v-model="data.<%= key %>" optionLabel="label" :remote-src="getAutocomplete('<%=obj['x-foreignkey']%>')"/>
44
60
  <% } else if(obj.type=='string'){ %>
45
61
  <% if(obj.format=='date'){ %>
@@ -55,9 +71,48 @@
55
71
  <% } else {%>
56
72
  <SimpleAppText autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
57
73
  <% }%>
58
- <% } else { %>
59
- <SimpleAppText autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
60
- <% }%>
74
+ <% } else if(obj.type=='object' && obj.properties){ %>
75
+ <SimpleAppValue :setting="o.getField('#/properties/<%= key %>')">
76
+ <%Object.keys(obj.properties).forEach(function(skey) { %>
77
+ <% let sobj=obj.properties[skey] %>
78
+ <% let fieldpath=`o.getField('#/properties/${key}/properties/${skey}')` %>
79
+ <% let vmodel=`data.${key}.${skey}` %>
80
+ <% let instancePath=`#/${key}/${skey}` %>
81
+
82
+ <% if(sobj.type=='boolean'){ %>
83
+ <SimpleAppCheckbox autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
84
+ <% } else if(sobj.type=='number' || sobj.type=='integer'){ %>
85
+ <SimpleAppNumber autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
86
+ <% } else if(sobj.type=='array' && sobj.items && sobj.items.type =='string' ){ %>
87
+ <SimpleAppChip autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
88
+ <% } else if(sobj.type=='object' && typeof sobj['x-foreignkey']!='undefined'){ %>
89
+ <SimpleAppAutocomplete autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>"
90
+ v-model="<%= vmodel %>" optionLabel="label" :remote-src="getAutocomplete('<%=sobj['x-foreignkey']%>')"/>
91
+ <% } else if(sobj.type=='string'){ %>
92
+ <% if(sobj.format=='date'){ %>
93
+ <SimpleAppText type="<%=sobj.format%>" instancePath="<%=instancePath%>" autofocus :setting="<%~fieldpath%>" v-model="<%= vmodel %>"/>
94
+ <% } else if(sobj.format=='x-text'){ %>
95
+ <SimpleAppTextarea :setting="<%~fieldpath%>'" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
96
+ <% } else if(sobj.format=='x-html'){ %>
97
+ <SimpleAppEditor editorStyle="height: 320px" instancePath="<%=instancePath%>" :setting="<%=fieldpath%>" v-model="<%= vmodel %>"/>
98
+ <% } else if(sobj.format=='email'){ %>
99
+ <SimpleAppText autofocus type="<%=~obj.type%>" instancePath="<%=instancePath%>" :setting="<%=fieldpath%>" v-model="<%= vmodel %>"/>
100
+ <% } else if(sobj.enum){ %>
101
+ <SimpleAppRadio autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
102
+ <% } else {%>
103
+ <SimpleAppText autofocus :setting="<%~fieldpath%>" instancePath="<%=instancePath%>" v-model="<%= vmodel %>"/>
104
+ <% }%>
105
+ <% } %>
106
+ <%})%>
107
+ </SimpleAppValue>
108
+ <% } else if(obj.type=='array' && obj.items.type=='object'){%>
109
+ <button @click="doc.add<%=key%>()" type="button">+</button>
110
+ <SimpleAppInputTable :getAutocomplete="getAutocomplete" :getField="o.getField"
111
+ :setting="o.getField('#/properties/<%=key%>')" #default="row" v-model="data.<%=key%>" :columns="<%=it.name%>_<%=key%>"></SimpleAppInputTable>
112
+ <% } else{%>
113
+ <!-- Can auto generate <%=obj.key %> -->
114
+ <!-- <%~ JSON.stringify(obj) %>-->
115
+ <%}%>
61
116
  <%})%>
62
117
 
63
118
  </CrudSimple>
@@ -10,7 +10,7 @@ import { Injectable } from '@nestjs/common';
10
10
  import { InjectModel } from '@nestjs/mongoose';
11
11
  import { Model } from 'mongoose';
12
12
  import {<%= it.typename%>JsonSchema } from './<%= it.doctype %>.jsonschema'
13
- import { SimpleAppService,IsolationType } from '../../class/SimpleAppService';
13
+ import { SimpleAppService,IsolationType,HookType } from '../../class/SimpleAppService';
14
14
  import { <%Object.keys(it.models).forEach(function(key) { %> <%=key %>, <%})%> } from './<%= it.doctype %>.type';
15
15
 
16
16
 
@@ -20,8 +20,18 @@ export class <%= it.typename %>Service extends SimpleAppService<<%= it.typename
20
20
  protected documentIdentityName='<%~ it.autocompletename %>'
21
21
  constructor(@InjectModel('<%= it.name %>') mydoc: Model<<%= it.typename %>>,
22
22
  ) {
23
- super(mydoc,IsolationType.org);
23
+ super('<%= it.doctype %>','<%= it.name %>',mydoc,IsolationType.org);
24
24
  this.setSchema(<%= it.typename%>JsonSchema)
25
+
26
+ <%if(it.moreAutoComplete.length>0){%>
27
+ this.addAutoCompleteField({
28
+ <%Object.keys(it.moreAutoComplete).forEach(function(key) { %>
29
+ <% let f=it.moreAutoComplete[key] %>
30
+ <%~ `${f}: '${f}'`, %>
31
+ <%})%>
32
+ })
33
+ <%}%>
34
+
25
35
  }
26
36
 
27
37
 
@@ -12,7 +12,9 @@ import { Configuration,
12
12
  <%= it.doctype.toUpperCase()%>Api,
13
13
  <%= it.typename%> ,
14
14
  <%Object.keys(it.schema).forEach(function(key){%>
15
- <% if(typeof it.schema[key]=='string'){%><%= it.schema[key] %>,<%}%>
15
+ <% if(typeof it.schema[key]=='string' || (Array.isArray(it.schema[key]) && typeof it.schema[key][0]=='string')){%>
16
+ <%= it.schema[key] %>,
17
+ <%}%>
16
18
  <%})%>
17
19
 
18
20
  } from '../openapi';
@@ -57,6 +59,38 @@ export class <%= it.typename%>Doc extends SimpleAppClient<<%= it.typename%>,<%=
57
59
  this.setData(newdata)
58
60
  }
59
61
 
62
+ <%Object.keys(it.jsonschema.properties).forEach(function(key) { %>
63
+ <% let obj=it.jsonschema.properties[key] %>
64
+
65
+ <% if(obj.type=='array' && obj.items.type=='object' && obj.items['properties']){ %>
66
+ <%let tablefields = Object.keys(obj.items.properties) %>
67
+ add<%=key%> = () => {
68
+ const tmp:<%=it.typename%><%=capitalizeFirstLetter(key)%> = {
69
+ <% for(let a=0;a<tablefields.length;a++){%>
70
+ <% const skey = tablefields[a] %>
71
+ <% const sobj = obj.items.properties[skey] %>
72
+ <%if(sobj.type=='object' && typeof sobj['x-foreignkey']!='undefined'){%>
73
+ <%=skey%>: <%~ sobj.default?JSON.stringify(sobj.default): '{_id:"",label:""}'%>,
74
+ <%}else if(sobj.type=='boolean'){%>
75
+ <%=skey%>: <%=sobj.default??false%>,
76
+ <%}else if(sobj.type=='number'){%>
77
+ <%=skey%>: <%=sobj.default??0.00%>,
78
+ <%}else if(sobj.type=='integer'){%>
79
+ <%=skey%>: <%=sobj.default??0%>,
80
+ <%}else if(sobj.type=='string'){%>
81
+ <%=skey%>: '<%=sobj.default??""%>',
82
+ <%}%>
83
+
84
+ <%}%>
85
+ }
86
+ this.getReactiveData().value.<%= key %>.push(tmp)
87
+ }
88
+
89
+
90
+ <%}%>
91
+ <%})%>
92
+
93
+
60
94
  /*****************************customized frontend + backend code*****************************************/
61
95
 
62
96
  <%~ it.bothEndCode %>
@@ -3,6 +3,7 @@ import { InjectModel } from '@nestjs/mongoose';
3
3
  import { Model } from 'mongoose';
4
4
  import Ajv from 'ajv';
5
5
  import addFormats from 'ajv-formats';
6
+ import addErrors from 'ajv-errors';
6
7
  import foreignkeys from '../dicts/foreignkeys.json';
7
8
 
8
9
  import {
@@ -16,26 +17,51 @@ export enum IsolationType {
16
17
  'tenant' = 'tenant',
17
18
  'branch' = 'branch',
18
19
  }
20
+ export enum HookType {
21
+ 'init'='init',
22
+ 'beforeSearch'='beforeSearch',
23
+ 'afterSearch'='afterSearch',
24
+ 'beforeValidation'='beforeValidation',
25
+ 'afterValidation'='afterValidation',
26
+ 'beforeCreate'='beforeCreate',
27
+ 'afterCreate'='afterCreate',
28
+ 'beforeUpdate'='beforeUpdate',
29
+ 'afterUpdate'='afterUpdate',
30
+ 'beforeDelete'='beforeDelete',
31
+ 'afterDelete'='afterDelete',
32
+ 'beforeFetchRecord'='beforeFetchRecord',
33
+ 'afterFetchRecord'='afterFetchRecord',
34
+
35
+
36
+ }
37
+ export type MoreProjectionType = {
38
+ [key:string]:string
39
+ }
19
40
  @Injectable()
20
41
  export class SimpleAppService<T extends { _id?: string }> {
21
42
  protected jsonschema = { type: 'object', properties: {}, required: [] };
22
43
  protected documentIdentityCode = 'code';
23
44
  protected documentIdentityName = 'label';
24
- protected documentName = 'category';
25
- protected documentType = 'CAT';
45
+ protected documentName = '-unknowndocname-';
46
+ protected documentType = '-unknowndoctype-';
26
47
  protected LIMITPERPAGE = 20;
48
+ protected moreAutoCompleteField:MoreProjectionType={}
27
49
  protected isolationtype: IsolationType = IsolationType.org;
28
50
  protected isolationFilter: any = {};
29
51
  protected data: T = { _id: '' } as T;
30
52
  private doc: Model<T>; //set private to prevent developer break data isolation control
31
53
  protected errorlist = [];
32
54
  constructor(
55
+ doctype:string,
56
+ docname:string,
33
57
  newdoc: Model<T>,
34
58
  isolationtype: IsolationType = IsolationType.org,
35
59
  ) {
60
+ this.documentType=doctype
61
+ this.documentName=docname
36
62
  this.doc = newdoc;
37
63
  this.isolationtype = isolationtype;
38
-
64
+ this.hook(HookType.init,this.documentName)
39
65
  // this.tenantdoc = tenantdoc
40
66
  }
41
67
  getRecordId = (): string => this.data._id;
@@ -80,20 +106,32 @@ export class SimpleAppService<T extends { _id?: string }> {
80
106
  throw new InternalServerErrorException(err.message);
81
107
  }
82
108
  }
109
+ addAutoCompleteField = (morefield:MoreProjectionType)=>{
110
+ const props = Object.getOwnPropertyNames(morefield)
111
+ console.log('addAutoCompleteField',props)
112
+ for(let i=0;i<props.length;i++){
113
+ const key = props[i]
114
+ this.moreAutoCompleteField[key] = '$'+morefield[key]
115
+ }
116
+ console.log(this.moreAutoCompleteField)
117
+ }
83
118
  async getAutoComplete(keyword: string) {
84
119
  try {
85
120
  const filter1 = {};
86
121
  const filter2 = {};
87
- filter1[this.documentIdentityCode] = { $regex: keyword };
88
- filter2[this.documentIdentityName] = { $regex: keyword };
122
+ filter1[this.documentIdentityCode] = { $regex: keyword,$options:'i' };
123
+ filter2[this.documentIdentityName] = { $regex: keyword,$options:'i' };
89
124
  const filterobj = { $or: [filter1, filter2] };
90
125
 
91
126
  Object.assign(filterobj, this.getIsolationFilter());
92
- const projections = {
127
+ let projections = {
93
128
  id: `\$_id`,
94
129
  label: `\$${this.documentIdentityCode}`,
95
130
  name: `\$${this.documentIdentityName}`,
96
131
  };
132
+ if(this.moreAutoCompleteField){
133
+ Object.assign(projections,this.moreAutoCompleteField)
134
+ }
97
135
  const products = await this.doc.find(filterobj, projections, {
98
136
  limit: this.LIMITPERPAGE,
99
137
  });
@@ -107,11 +145,14 @@ export class SimpleAppService<T extends { _id?: string }> {
107
145
  }
108
146
  async search(filters: Object) {
109
147
  try {
148
+
110
149
  Object.assign(filters, this.getIsolationFilter());
150
+ await this.hook(HookType.beforeSearch,filters)
111
151
  const products = await this.doc.find(filters);
112
152
  const productlist = products.map((p: T) => {
113
153
  return p;
114
154
  });
155
+ await this.hook(HookType.afterSearch,productlist)
115
156
  // console.log(products);
116
157
  return productlist;
117
158
  } catch (err) {
@@ -120,7 +161,9 @@ export class SimpleAppService<T extends { _id?: string }> {
120
161
  // return this;
121
162
  }
122
163
  async findById(id: string) {
164
+ await this.hook(HookType.beforeFetchRecord,id)
123
165
  const data = await this.search({ _id: id });
166
+ await this.hook(HookType.afterFetchRecord,data)
124
167
  if (data.length == 1) {
125
168
  // console.log('data0', data[0]);
126
169
  return data[0];
@@ -133,11 +176,13 @@ export class SimpleAppService<T extends { _id?: string }> {
133
176
  let result;
134
177
 
135
178
  try {
179
+ await this.hook(HookType.beforeCreate,this.data)
136
180
  Object.assign(this.data, User.getInstance().getCreateFilter());
137
181
  delete this.data._id;
138
- this.validateData(this.data);
182
+ await this.validateData(this.data);
139
183
  const newdoc = new this.doc(this.data);
140
184
  result = await newdoc.save();
185
+ await this.hook(HookType.afterCreate,result)
141
186
  } catch (err) {
142
187
  throw new InternalServerErrorException(err.message);
143
188
  }
@@ -146,7 +191,7 @@ export class SimpleAppService<T extends { _id?: string }> {
146
191
  async update() {
147
192
  const id: string = this.getRecordId();
148
193
  Object.assign(this.data, User.getInstance().getUpdateFilter());
149
- this.findIdThenUpdate(id, this.data);
194
+ await this.findIdThenUpdate(id, this.data);
150
195
  }
151
196
  async delete() {
152
197
  const id: string = this.getRecordId();
@@ -157,27 +202,32 @@ export class SimpleAppService<T extends { _id?: string }> {
157
202
  return dependency;
158
203
  }
159
204
  }
160
- hook(type: string, data: T) {
205
+ hook = async (type: string, data?: any) =>{
206
+ console.log("Default hook",data)
161
207
  return true;
162
208
  }
163
- validateData(data: T) {
209
+ async validateData(data: T) {
164
210
  const ajv = new Ajv({ allErrors: true });
165
211
  addFormats(ajv);
212
+ addErrors(ajv);
213
+
166
214
  ajv.addFormat('x-document-no', /.*$/);
167
215
  ajv.addFormat('x-document-name', /.*$/);
168
216
  ajv.addFormat('x-text', /.*$/);
217
+ ajv.addFormat('tel', /^$|^\d{7,15}$/gm);
169
218
  ajv.addFormat('x-html', /.*$/);
170
219
  ajv.addKeyword({
171
220
  keyword: 'x-foreignkey',
172
221
  type: 'string',
173
222
  });
174
223
 
175
- if (!this.hook('pre-validation', data)) {
224
+ const issuccess = await this.hook(HookType.beforeValidation, data)
225
+ if (!issuccess) {
176
226
  const erromsg: string[] = [];
177
227
  for (let i = 0; i < this.errorlist.length; i++) {
178
228
  erromsg.push(this.errorlist[i].message);
179
229
  }
180
- console.log("pre-validation:",erromsg)
230
+
181
231
  throw new InternalServerErrorException(erromsg.join('\n'));
182
232
  }
183
233
  const validate = ajv.compile(this.jsonschema);
@@ -186,18 +236,19 @@ export class SimpleAppService<T extends { _id?: string }> {
186
236
  if (!valid) {
187
237
  // console.log(validate.errors);
188
238
  const erromsg: string[] = [];
189
- for (let i = 0; i < validate.errors.length; i++) {
190
- erromsg.push(validate.errors[i].message);
239
+ for (let i = 0; i < ajv.errors.length; i++) {
240
+ erromsg.push(ajv.errors[i].message);
191
241
  }
192
- console.log("ajv erromsg: ",erromsg)
242
+ console.log('ajv erromsg: ', erromsg);
193
243
  throw new InternalServerErrorException(erromsg.join('\n'));
194
244
  }
195
- this.hook('post-validation', data);
245
+ await this.hook(HookType.afterValidation, data);
196
246
  }
197
247
 
198
248
  async findIdThenDelete(id: string): Promise<any> {
199
249
  // const data = await this.findById(id);
200
250
  try {
251
+ await this.hook(HookType.beforeDelete,id)
201
252
  //console.log('deletedeletedeletedelete');
202
253
  const dependency = await this.getRelatedRecords(id);
203
254
  if (!dependency) {
@@ -205,7 +256,7 @@ export class SimpleAppService<T extends { _id?: string }> {
205
256
  filter['_id'] = id;
206
257
  const deleteresult = await this.doc.deleteOne(filter);
207
258
  // this.doc.findByIdAndDelete(id)
208
-
259
+ await this.hook(HookType.afterDelete,deleteresult)
209
260
  //this.doc.findByIdAndDelete(id);
210
261
  return deleteresult;
211
262
  } else {
@@ -222,15 +273,15 @@ export class SimpleAppService<T extends { _id?: string }> {
222
273
 
223
274
  findIdThenUpdate = async (id: string, data: T) => {
224
275
  const existingdata = await this.findById(id);
225
-
276
+ await this.hook(HookType.beforeUpdate,data)
226
277
  try {
227
278
  Object.assign(data, User.getInstance().getUpdateFilter());
228
279
  Object.assign(existingdata, data);
229
- this.validateData(data);
280
+ await this.validateData(data);
230
281
  let filter = this.getIsolationFilter();
231
282
  filter['_id'] = id;
232
283
  const result = await this.doc.findOneAndUpdate(filter, data);
233
-
284
+ await this.hook(HookType.afterUpdate,data)
234
285
  return result;
235
286
  } catch (err) {
236
287
  throw new InternalServerErrorException(err.message);
@@ -252,7 +303,7 @@ export class SimpleAppService<T extends { _id?: string }> {
252
303
  const collection = this.doc.db.collection(collectionname);
253
304
  //single schema may have multiple foreign key link here, loop all
254
305
  for (let j = 0; j < fobjs.length; j++) {
255
- const fkey = fobjs[j];
306
+ const fkey = fobjs[j] + '._id';
256
307
  const filter = {};
257
308
  filter[fkey] = id;
258
309
  //console.log('getRelatedRecords get filter', collectionname, filter);
@@ -13,10 +13,10 @@ async function bootstrap() {
13
13
  in: 'header',name: 'x-org',type: 'apiKey',description: 'base 64 url encode. example: MS0xLTE',
14
14
  },'x-org',)
15
15
  .addOAuth2({
16
- name:'oauth2',in:'header',type:'oauth2',flows:{
16
+ type:'oauth2',flows:{
17
17
  implicit:{
18
18
  authorizationUrl: `${process.env.OAUTH2_CONFIGURL}/protocol/openid-connect/auth`,
19
- scopes:[],
19
+ scopes:{},
20
20
  }}},'oauth2')
21
21
  .addSecurityRequirements('x-org')
22
22
  .addSecurityRequirements('oauth2')
@@ -31,7 +31,7 @@ const router = useRouter()
31
31
  const route = useRoute()
32
32
  const filters = ref()
33
33
  defineShortcuts({
34
- 'ctrl_i': () => newData()
34
+ 'ctrl_enter': () => newData()
35
35
  })
36
36
  const refresh = () => {
37
37
  obj.list().then((res:any) => {
@@ -91,7 +91,7 @@ refresh();
91
91
 
92
92
  <template>
93
93
  <div class="simpleapp-crudsimple">
94
- <button class="bg-primary" @click="newData" v-tooltip="'Add new(ctrl+i)'" >New</button>
94
+ <button class="bg-primary" @click="newData" v-tooltip="'Add new(ctrl+enter)'" >New</button>
95
95
  <SimpleAppDatatable
96
96
  @row-dblclick="triggerEdit"
97
97
  v-model="recordlist"
@@ -5,17 +5,23 @@
5
5
  * last change 2023-09-09
6
6
  * author: Ks Tan
7
7
  */
8
+ // import Panel from 'primevue/panel';
9
+ // import ScrollPanel from 'primevue/scrollpanel';
10
+ import Dialog from 'primevue/dialog';
8
11
 
12
+ import {ref} from 'vue'
9
13
  const modelValue = defineModel()
10
14
  const isdebug = ref(useRuntimeConfig().public.DEBUGDATA)
15
+ const visible = ref(false)
11
16
  </script>
12
17
  <template>
13
18
  <div class="floatright" v-if="isdebug=='1'">
14
- <h3>data in json</h3>
15
- <pre>
16
- {{ modelValue }}
17
- </pre>
18
- </div>
19
+ <button @click="visible=true">Debug</button>
20
+ <Dialog v-model:visible="visible" modal header="Debug data" :style="{ width: '80vw' }">
21
+ <pre>{{ modelValue }}</pre>
22
+ </Dialog>
23
+ </div>
24
+
19
25
  </template>
20
26
  <style scoped>
21
27
  .floatright{
@@ -17,11 +17,9 @@ const getAutoComplete = (apiname: string): any => {
17
17
  isJsonMime: () => true,
18
18
  };
19
19
  const docsOpenapi: any = {
20
- 'category' : new o.CATApi(config),
21
- 'leadtype' : new o.LEADTApi(config),
22
- 'level' : new o.LVLApi(config),
23
- 'product' : new o.PRDApi(config),
24
- 'studentgroup' : new o.STGApi(config),
20
+ <% for(let i=0;i<it.length; i++){ %>
21
+ '<%=it[i].docname.toLowerCase()%>': new o.<%=it[i].doctype.toUpperCase()%>Api(config),
22
+ <%}%>
25
23
  };
26
24
  if (!docsOpenapi[apiname]) {
27
25
  console.error(
@@ -6,7 +6,13 @@
6
6
  */
7
7
 
8
8
  export const getMenus =()=>{
9
-
9
+ const logout = async () => {
10
+ const { signOut } = useAuth();
11
+ const { data } = await <any>useFetch('/api/auth/logout');
12
+ const addPath = encodeURIComponent("/login");
13
+ signOut({ redirect: false });
14
+ window.location.href = data?.value?.path + addPath;
15
+ };
10
16
  const route = useRoute();
11
17
  const xorg = route.params.xorg
12
18
  let data =[];
@@ -19,9 +25,13 @@ export const getMenus =()=>{
19
25
  {label: '<%=obj.docname.toLowerCase()%>', to:`/${xorg}/<%=obj.docname.toLowerCase()%>`},
20
26
  <%}%>
21
27
  ]},
28
+ {label: 'Signout',icon: 'pi pi-fw pi-home', command: () => logout()},
22
29
  ]
23
30
  }else{
24
- data= [{label: 'Home',icon: 'pi pi-fw pi-home', url:'/'},]
31
+ data= [
32
+ {label: 'Home',icon: 'pi pi-fw pi-home', url:'/'},
33
+ {label: 'Signout',icon: 'pi pi-fw pi-home', command: () => logout()},
34
+ ]
25
35
  }
26
36
  return data
27
37
  }
@@ -30,6 +30,9 @@ import SimpleAppTextarea from '@simitgroup/simpleapp-vue-component/src/component
30
30
  import SimpleAppValue from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppValue.vue'
31
31
  import SimpleFieldContainer from '@simitgroup/simpleapp-vue-component/src/components/SimpleFieldContainer.vue'
32
32
  import SimpleAppDatatable from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppDatatable.vue'
33
+ import SimpleAppInputTable from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppInputTable.vue'
34
+ import SimpleAppDynamicInput from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppDynamicInput.vue'
35
+
33
36
  import mitt from 'mitt'
34
37
  import ToastService from 'primevue/toastservice';
35
38
  import ConfirmationService from 'primevue/confirmationservice';
@@ -66,6 +69,10 @@ export default defineNuxtPlugin((nuxtApp) => {
66
69
  .component("SimpleAppTextarea",SimpleAppTextarea)
67
70
  .component("SimpleAppValue",SimpleAppValue)
68
71
  .component("SimpleFieldContainer",SimpleFieldContainer)
72
+ .component("SimpleAppDatatable",SimpleAppDatatable)
73
+ .component("SimpleAppDynamicInput",SimpleAppDynamicInput)
74
+ .component("SimpleAppInputTable",SimpleAppInputTable)
75
+
69
76
  //.component("Quill",Quill) // cause problem in ssr mode
70
77
  .use(ToastService)
71
78
  .use(ConfirmationService)
@@ -5,10 +5,18 @@
5
5
  button {
6
6
  @apply p-2 border-2
7
7
  }
8
-
8
+ .simpleapp-input-container{
9
+ @apply flex flex-col
10
+ }
11
+ .simpleapp-input-container .p-chips ul{
12
+ width: 100%
13
+ }
9
14
  .input-error{
10
15
  @apply text-red-500
11
16
  }
17
+ .input-error input{
18
+ @apply border-red-600
19
+ }
12
20
  .simpleapp-tool-bar button{
13
21
  margin-right: 1rem;
14
22
  }