@simitgroup/simpleapp-generator 1.1.25 → 1.1.27

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 (32) hide show
  1. package/dist/processors/jsonschemabuilder.d.ts.map +1 -1
  2. package/dist/processors/jsonschemabuilder.js +3 -4
  3. package/dist/processors/jsonschemabuilder.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/processors/jsonschemabuilder.ts +4 -4
  6. package/templates/basic/nest/processor.ts.eta +13 -1
  7. package/templates/basic/nuxt/pages.[id].vue.eta +24 -2
  8. package/templates/basic/nuxt/pages.form.vue.eta +44 -93
  9. package/templates/basic/nuxt/pages.viewer.vue.eta +17 -5
  10. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +57 -17
  11. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +9 -3
  12. package/templates/nuxt/assets/css/style.css._eta +4 -0
  13. package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +2 -1
  14. package/templates/nuxt/components/renderer/RendererDate.vue.eta +2 -2
  15. package/templates/nuxt/components/renderer/RendererForeignKey.vue.eta +13 -4
  16. package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +6 -4
  17. package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +3 -3
  18. package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +12 -21
  19. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +106 -0
  20. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +157 -116
  21. package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +1 -0
  22. package/templates/nuxt/composables/stringHelper.generate.ts.eta +3 -1
  23. package/templates/nuxt/lang/{df.ts._eta → df.ts.eta} +12 -4
  24. package/templates/nuxt/lang/more.ts._eta +3 -0
  25. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +16 -3
  26. package/templates/nuxt/types/others.ts.eta +9 -4
  27. package/templates/nuxt/types/simpleappinput.ts.eta +11 -0
  28. package/tsconfig.tsbuildinfo +1 -1
  29. /package/templates/basic/nuxt/{pages.new.vue.eta → pages.new.vue.etaxxx} +0 -0
  30. /package/templates/nuxt/components/header/{HeaderBar.vue.eta → HeaderBar.vue._eta} +0 -0
  31. /package/templates/nuxt/components/header/button/{HeaderButtonMenuPicker.vue.eta → HeaderButtonMenuPicker.vue._eta} +0 -0
  32. /package/templates/nuxt/layouts/{default.vue.eta → default.vue._eta} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"jsonschemabuilder.d.ts","sourceRoot":"","sources":["../../src/processors/jsonschemabuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiF,MAAM,aAAa,CAAC;AAUzH,OAAO,EAGL,WAAW,EAIZ,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,qBAAqB,YAAmB,MAAM,eAAa,WAAW,yBAmElF,CAAC"}
1
+ {"version":3,"file":"jsonschemabuilder.d.ts","sourceRoot":"","sources":["../../src/processors/jsonschemabuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiF,MAAM,aAAa,CAAC;AAUzH,OAAO,EAGL,WAAW,EAIZ,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,qBAAqB,YAAmB,MAAM,eAAa,WAAW,yBAkElF,CAAC"}
@@ -42,8 +42,7 @@ const readJsonSchemaBuilder = async (docname, orijsondata) => {
42
42
  orijsondata.properties["docNoFormat"] = tmp;
43
43
  }
44
44
  if (schemaconfigs.allStatus && schemaconfigs.allStatus.length > 0) {
45
- orijsondata.properties["readOnly"] = { type: 'boolean', default: false };
46
- orijsondata.properties["documentStatus"] = { type: 'string', default: 'D' };
45
+ orijsondata.properties["documentStatus"] = { type: 'string', default: 'draft' };
47
46
  }
48
47
  //enforce format uuid for _id
49
48
  orijsondata.properties['_id']['format'] = 'uuid';
@@ -214,8 +213,8 @@ const getField = (fieldname, obj, isrequired) => {
214
213
  // oritype: obj.type,
215
214
  required: isrequired,
216
215
  };
217
- if (obj.title)
218
- f.title = obj.title;
216
+ // if (obj.title)
217
+ f.title = obj.title;
219
218
  if (obj.description)
220
219
  f.description = obj.description;
221
220
  if (obj.format)
@@ -1 +1 @@
1
- {"version":3,"file":"jsonschemabuilder.js","sourceRoot":"","sources":["../../src/processors/jsonschemabuilder.ts"],"names":[],"mappings":";;;;;;AAGA,oDAAsB;AAGtB,mDAAmD;AACnD,iCAAwC;AACxC,iGAA6D;AAC7D,wCAAmD;AACnD,sDAAsD;AACtD,kCAOiB;AACjB,MAAM,GAAG,GAAoB,IAAI,cAAM,EAAE,CAAC;AAC1C,MAAM,UAAU,GAAI,oBAAoB,CAAA;AACxC,MAAM,mBAAmB,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAe,EAAC,WAAuB,EACjF,EAAE;;IACF,mEAAmE;IACnE,4CAA4C;IAC5C,YAAY;IACZ,IAAG,CAAC,WAAW,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,EAAE,CAAC,CAAA;IACtE,IAAG,CAAC,WAAW,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,EAAE,CAAC,CAAA;IACtE,sEAAsE;IACtE,yEAAyE;IAEzE,IAAI,aAAa,GAAgB,WAAW,CAAC,UAAU,CAAC,CAAA;IACxD,MAAM,OAAO,GAAC,aAAa,CAAC,YAAY,CAAA;IAExC,IAAG,CAAC,aAAa,CAAC,cAAc,EAAC;QAC/B,aAAa,CAAC,YAAY,CAAA;KAC3B;IAED,IAAG,CAAC,aAAa,CAAC,WAAW,EAAC;QAC5B,aAAa,CAAC,WAAW,GAAC,EAAE,CAAA;KAC7B;IAED,IAAG,aAAa,CAAC,sBAAsB,EAAC;QACtC,MAAM,GAAG,GAAG;YACR,IAAI,EAAE,QAAQ;YACd,cAAc,EAAC,aAAa;YAC5B,UAAU,EAAE,EAAC,GAAG,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;SAC9D,CAAA;QACD,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAA4B,CAAA;KACrE;IAED,IAAG,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,EAAC;QAC7D,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAE,OAAO,EAAC,KAAK,EAAC,CAAA;QACpE,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,EAAC,CAAA;KACxE;IACD,6BAA6B;IAC7B,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAC,MAAM,CAAA;IAG9C,6CAA6C;IAC7C,oBAAoB;IACpB,wCAAwC;IACxC,4BAA4B;IAC5B,kCAAkC;IAElC,IAAI;IACJ,iCAAiC;IACjC,sBAAsB;IACtB,8CAA8C;IAC9C,6EAA6E;IAC7E,MAAO,WAAW,GAAG,MAAM,gCAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAC,EAAE;QACzE,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;IACF,uEAAuE;IACvE,4GAA4G;IAC5G,MAAO,QAAQ,GAAe,kBAAI,WAAW,CAAgB,CAAA;IAC7D,IAAI,SAAS,GAAgB,EAAE,CAAC;IAEhC,MAAM,SAAS,CACb,aAAa,CAAC,YAAY,EAC1B,QAAQ,EACR,QAAQ,CAAC,UAAU,EACnB,MAAA,QAAQ,CAAC,UAAU,CAAC,mCAAI,EAAE,EAC1B,GAAG,EACH,aAAa,EACb,SAAS,CACV,CAAC;IACF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAC;AAnEW,QAAA,qBAAqB,yBAmEhC;AAGF;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAG,KAAK,EACnB,OAAe,EACf,UAAkB,EAClB,QAA8B,EAC9B,YAAkC,EAAC,UAAiB,EACpD,aAA0B,EAC1B,SAAsB,EACA,EAAE;;IAExB,IAAG,CAAC,mBAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC;QAC9B,mBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACxB;IACD,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,kDAAkD;IAClD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;;QAC1C,IAAG,CAAC,mBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;YAC1B,mBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACpB;QACD,6DAA6D;QAC7D,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,UAAU,GAAc,EAAiB,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,UAAU,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,IAAG,YAAY,IAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;YAC7C,UAAU,GAAC,IAAI,CAAA;SAChB;QACD,MAAM,OAAO,GAAW,gBAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,gBAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAGpE,iCAAiC;QACjC,4CAA4C;QAC5C,IAAI;QAGJ,6CAA6C;QAC7C,gDAAgD;QAChD,KAAK;QACL,6CAA6C;QAC7C,0EAA0E;QAExE,gBAAgB;QAChB,aAAa;QACb,qBAAqB;QACrB,4BAA4B;QAC5B,IAAI;QACJ,QAAQ;QACR,IAAG,GAAG,CAAC,mBAAmB,CAAC,EAAC;YAC1B,MAAM,oBAAoB,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAA;YACrD,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;YAClD,MAAM,kBAAkB,GAAE,CAAC,GAAG,CAAC,IAAI,IAAE,QAAQ,CAAC,CAAA,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;YAClE,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,IAAI,IAAE,QAAQ,CAAC,CAAC,CAAC,CAAA,GAAG,UAAU,IAAI,GAAG,MAAM,CAAA,CAAC,CAAA,GAAG,UAAU,IAAI,GAAG,EAAE,CAAA;YAE9F,8BAA8B;YAC9B,IAAG,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAC;gBACjD,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;aACrE;iBAAI;gBACH,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAC,CAAC,cAAc,CAAC,CAAA;aACjE;YAED,kCAAkC;YAClC,IAAG,CAAC,wBAAc,CAAC,oBAAoB,CAAC,EAAC;gBACvC,IAAI,GAAG,GAAkB,EAAoB,CAAA;gBAC7C,GAAG,CAAC,oBAAoB,CAAC,GAAC,CAAC,kBAAkB,CAAC,CAAA;gBAC9C,wBAAc,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAA;aAC3C;iBACI,IAAG,CAAC,wBAAc,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,EAAC;gBAClE,wBAAc,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,GAAC,CAAC,kBAAkB,CAAC,CAAA;aAChF;iBAAI;gBACH,wBAAc,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;aACpF;SAEF;QAED,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE;YACxB,6DAA6D;YAC7D,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAC,GAAG,UAAU,IAAI,GAAG,EAAE,EAAC,aAAa,EAAC,SAAS,CAAC,CAAC;YAChH,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;SACzB;aAAM,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,KAAI,QAAQ,EAAE;YAC3E,MAAM,UAAU,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAA;YACzC,IAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC;gBACxB,UAAU,CAAC,SAAS,CAAC,GAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,EAAC,mCAAmC,EAAC,CAAA;aACtF;YACD,IAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC;gBACxB,UAAU,CAAC,SAAS,CAAC,GAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,EAAC,kBAAkB,EAAC,CAAA;aACrE;YACD,IAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAC;gBAC1B,UAAU,CAAC,WAAW,CAAC,GAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,CAAA;aACxC;YACD,IAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAC;gBAC1B,UAAU,CAAC,WAAW,CAAC,GAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,CAAA;aACxC;YACD,IAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAC;gBACpB,UAAU,CAAC,KAAK,CAAC,GAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,CAAA;aAClC;YACD,iCAAiC;YACjC,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,GAAG,UAAU,IAAI,GAAG,KAAK,EAAC,aAAa,EAAC,SAAS,CAAC,CAAC;YACpI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC3B;aAAM,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,KAAI,QAAQ,EAAE;YAC9D,qBAAqB;YACrB,sDAAsD;YACtD,MAAM,UAAU,GAAU,MAAA,MAAA,UAAU,CAAC,IAAI,0CAAE,QAAQ,EAAE,mCAAI,QAAQ,CAAA;YACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC9B;aAAM;YACL,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,0DAA0D;SAC3D;IACH,CAAC,CAAC,CAAA;IACF,6BAA6B;IAE7B,MAAM,SAAS,GAAE,gBAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACtC,uCAAuC;IACvC,+BAA+B;IAC/B,SAAS,CAAC,SAAS,CAAC,GAAG;QACrB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,MAAA,aAAa,CAAC,SAAS,mCAAE,EAAE;QACtC,SAAS,EAAE,MAAA,aAAa,CAAC,aAAa,mCAAI,EAAE;QAC5C,gBAAgB,EAAC,MAAA,aAAa,CAAC,4BAA4B,mCAAI,EAAE;QACjE,iBAAiB,EAAC,MAAA,aAAa,CAAC,SAAS,mCAAI,EAAE;QAC/C,WAAW,EAAC,MAAA,aAAa,CAAC,cAAc,mCAAI,EAAE;QAC9C,sDAAsD;QACtD,aAAa,EAAC,aAAa,CAAC,aAAa;QACzC,YAAY,EAAC,MAAA,aAAa,CAAC,sBAAsB,mCAAI,KAAK;QAC1D,WAAW,EAAE,MAAA,aAAa,CAAC,WAAW,mCAAI,EAAE;KAC7C,CAAC;IACF,sFAAsF;IACtF,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAIF,MAAM,QAAQ,GAAG,CACf,SAAiB,EACjB,GAAgB,EAChB,UAA+B,EACnB,EAAE;IACd,IAAG,CAAC,mBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC;QAChC,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;KAC1B;IAED,IAAI,QAAQ,GAAe,GAAG,CAAC,IAAkB,CAAA;IACjD,wBAAwB;IACxB,oBAAoB;IACpB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;QACzB,QAAQ,GAAG,iBAAU,CAAC,MAAM,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC;KACpB;IAED,MAAM,CAAC,GAAe;QACpB,IAAI,EAAE,QAAQ;QACd,qBAAqB;QACrB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEF,IAAI,GAAG,CAAC,KAAK;QAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACnC,IAAI,GAAG,CAAC,WAAW;QAAE,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACrD,IAAI,GAAG,CAAC,MAAM;QAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACtC,IAAI,GAAG,CAAC,QAAQ;QAAE,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC5C,IAAI,GAAG,CAAC,OAAO,EAAE;QACf,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;KACzB;SAAM;QACL,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ;YAAE,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;aAClC,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS;YAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;aAC7D,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS;YAAE,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;aAC3C,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO;YAAE,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;;YACtC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
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.1.25",
3
+ "version": "1.1.27",
4
4
  "description": "frontend nuxtjs and backend nests code generator using jsonschema",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -50,9 +50,8 @@ export const readJsonSchemaBuilder = async (docname: string,orijsondata:JSONSche
50
50
  orijsondata.properties["docNoFormat"] = tmp as JSONSchema7Definition
51
51
  }
52
52
 
53
- if(schemaconfigs.allStatus && schemaconfigs.allStatus.length>0){
54
- orijsondata.properties["readOnly"] = {type:'boolean', default:false}
55
- orijsondata.properties["documentStatus"] = {type:'string', default:'D'}
53
+ if(schemaconfigs.allStatus && schemaconfigs.allStatus.length>0){
54
+ orijsondata.properties["documentStatus"] = {type:'string', default:'draft'}
56
55
  }
57
56
  //enforce format uuid for _id
58
57
  orijsondata.properties['_id']['format']='uuid'
@@ -258,7 +257,8 @@ const getField = (
258
257
  required: isrequired,
259
258
  };
260
259
 
261
- if (obj.title) f.title = obj.title;
260
+ // if (obj.title)
261
+ f.title = obj.title;
262
262
  if (obj.description) f.description = obj.description;
263
263
  if (obj.format) f.format = obj.format;
264
264
  if (obj.examples) f.examples = obj.examples;
@@ -49,7 +49,19 @@ export class <%= it.typename %>Processor extends SimpleAppService<<%= it.typenam
49
49
  })
50
50
  <%}%>
51
51
  }
52
-
52
+ <%if(it.jsonschema.properties['readOnly'] || it.jsonschema.properties['documentStatus']){%>
53
+ public isReadOnly():boolean{
54
+ <%if(it.jsonschema.properties['readOnly']){%>
55
+ if(this.data.readOnly) return true
56
+ <%}%>
57
+ <%if(it.jsonschema.properties['documentStatus']){%>
58
+ const docstatus = this.data.documentStatus
59
+ const statussetting = this.jsonschema['x-simpleapp-config'].allStatus?.find((item)=>item.status==docstatus)
60
+ if(statussetting && statussetting.readOnly) return true
61
+ <%}%>
62
+ return false
63
+ }
64
+ <%}%>
53
65
 
54
66
  reCalculateValue(data:<%= it.typename %>){
55
67
  //console.log('trigger new recalculate')
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <Crud :_id="_id"/>
2
+ <Crud :_id="_id" @after="after"/>
3
3
  </template>
4
4
 
5
5
  <script setup lang="ts">
@@ -11,5 +11,27 @@
11
11
  * author: Ks Tan
12
12
  */
13
13
  import Crud from './form.vue'
14
- defineProps(['_id'])
14
+ import {<%= it.typename %>} from '~/simpleapp/generate/types'
15
+
16
+ const doc = useNuxtApp().$<%= it.typename %>Doc()
17
+
18
+ const props = defineProps<{_id:string}>();
19
+ const after = (actionName: string, data: <%= it.typename %>, result: any) => {
20
+ switch (actionName) {
21
+ case "new":
22
+ goTo(doc.getDocName(), "new");
23
+ break;
24
+ case "create":
25
+ goTo(doc.getDocName(), data._id);
26
+ refreshDocumentList(doc.getDocName())
27
+ break;
28
+ case "update":
29
+ refreshDocumentList(doc.getDocName());
30
+ break;
31
+ case "delete":
32
+ goTo(doc.getDocName(), "new");
33
+ refreshDocumentList(doc.getDocName())
34
+ break;
35
+ }
36
+ };
15
37
  </script>
@@ -6,7 +6,7 @@
6
6
  (instancepath ? `:instancepath="\`${instancepath}\`"` : '') + '/>' %>
7
7
  <template>
8
8
 
9
- <SimpleAppForm #default="o" :document="doc" :readonly="isReadOnly">
9
+ <SimpleAppForm #default="o" :document="doc">
10
10
  <client-only>
11
11
  <% if(it.autocompletename){%>
12
12
  <title v-if="id">{{ t(doc.getDocName())}}: {{ data.<%=it.autocompletename%> ?? ''}}</title>
@@ -14,25 +14,7 @@
14
14
  <title v-if="id">{{ t(doc.getDocName())}}</title>
15
15
  <%}%>
16
16
 
17
- <div class="simpleapp-tool-bar col-span-4 text-left gap-4" >
18
- <Button class="" :disabled="disabled" @click="newData" type="button" v-if="canPerform(doc.getDocName(),'create')">New</Button>
19
- <Button class="btn-primary" :disabled="disabled" @click="createData" type="button" v-if="canPerform(doc.getDocName(),'create') && doc.isNew()">Create</Button>
20
- <Button class="btn-primary" :disabled="disabled" @click="updateData" type="button" v-if="canPerform(doc.getDocName(),'update') && !doc.isNew()">Update</Button>
21
- <Button class="btn-danger" :disabled="disabled" @click="deleteData($event)" type="button" v-if="canPerform(doc.getDocName(),'delete') && !doc.isNew()">Delete</Button>
22
- <div class="p-2">
23
- <Checkbox :binary="true" v-model="ismodify" input-id="ismodify"/>
24
- <label for="ismodify" class="ml-2">{{ t('modify') }}</label>
25
- </div>
26
- <!-- special api start-->
27
- <%for(let i=0;i<it.apiSettings.length;i++){%>
28
- <% let api = it.apiSettings[i] %>
29
- <Button class="btn-warn" :disabled="disabled" type="button" v-if="canPerform(doc.getDocName(), 'update') && !doc.isNew()"
30
- @click="run<%=capitalizeFirstLetter(api.action)%>" >{{t('<%=api.action%>')}}</Button>
31
- <%}%>
32
- <!-- special api end -->
33
- <ProgressSpinner v-if="disabled==true" style="width: 2rem; height: 2rem" ></ProgressSpinner>
34
- <ConfirmPopup></ConfirmPopup>
35
- </div>
17
+ <SimpleAppFormToolBar :document="doc" @on="actionListener"></SimpleAppFormToolBar>
36
18
  <div class="grid grid-cols-4 gap-4">
37
19
  <% let isautofocus='' %>
38
20
  <%Object.keys(it.jsonschema.properties).forEach(function(key) { %>
@@ -164,88 +146,55 @@
164
146
  * last change 2023-09-09
165
147
  * author: Ks Tan
166
148
  */
167
- import {SimpleAppInputType} from "~/types"
168
- import ConfirmPopup from 'primevue/confirmpopup';
169
- import { useConfirm } from "primevue/useconfirm";
170
- const confirm = useConfirm();
171
- const ismodify = ref(false)
172
- const isReadOnly = computed(()=>!ismodify.value)
173
- const props = defineProps<{ _id?: string; skipRedirect?: boolean }>();
174
- const {$<%= it.typename %>Doc,$event } = useNuxtApp();
175
- const doc = $<%= it.typename %>Doc()
149
+ import { SimpleAppInputType } from "~/types";
150
+
151
+ const props = defineProps<{ _id?: string}>();
152
+ const doc = useNuxtApp().$<%= it.typename %>Doc()
176
153
  const data = doc.getReactiveData();
177
- const emits = defineEmits(["afterCreate","afterDelete","afterUpdate"]);
154
+ const emits = defineEmits(["after"]);
155
+ const id = computed(() => props._id ?? "");
156
+
157
+ /************ start default methods ****************/
178
158
 
179
- const fetchRecord = async (recordid:string) =>{
180
- await doc.getById(recordid)
159
+ const newData = () => doc.setNew()
160
+ const createData = async () => await doc.create()
161
+ const updateData = async () => await doc.update()
162
+ const deleteData = async () => await doc.delete(data.value._id ?? "")
163
+
164
+ const getRecord = async () => {
165
+ if(id.value && id.value != 'new'){
166
+ await doc.getById(id.value)
167
+ }else{
168
+ newData()
169
+ }
181
170
  }
182
171
 
183
- const id = computed(() => props._id ?? '');
184
-
172
+ getRecord()
173
+ watch(id,async ()=>getRecord())
174
+ /************ end default methods ****************/
185
175
 
186
- const disabled = computed(()=>{
187
- return false
188
- })
189
176
 
190
- const createData = async () => {
191
- // disabled.value=true
177
+ const actionListener = async (actionName: string) => {
192
178
 
193
- doc.create().then((res)=>{
194
- //refresh()
195
- emits('afterCreate',res.data)
196
- }).catch(err=>{
197
- console.error(err)
198
- })
199
-
200
- };
201
- const updateData = async () => {
202
- doc.update().then((res)=>{
203
- // visible.value=false
204
- refresh()
205
- emits("afterUpdate", res.data);
206
- }).catch(err=>{
207
- console.error(err)
208
- })
179
+ let result
180
+ switch (actionName) {
181
+ case "create":
182
+ result =await createData()
183
+ break;
184
+ case "update":
185
+ result = await updateData();
186
+ break;
187
+ case "delete":
188
+ result =await deleteData()
189
+ break;
190
+ case "new":
191
+ result =await newData();
192
+ break;
193
+ }
209
194
 
195
+ emits('after',actionName,data.value,doc,result)
210
196
  };
211
- const deleteData = (event:Event) => {
212
-
213
- confirm.require({
214
- target: event.currentTarget as HTMLElement,
215
- message:'Delete?',
216
- icon: 'pi pi-exclamation-triangle',
217
- acceptClass: 'p-button-danger',
218
- accept: ()=>{
219
- // disabled.value=true
220
- doc.delete(data.value._id ?? "").then((res) => {
221
- refresh();
222
- if (!props.skipRedirect) {
223
- goTo(doc.getDocName());
224
- } else {
225
- doc.setNew();
226
- isReadOnly.value = false;
227
- }
228
- emits("afterDelete", res.data);
229
- });
230
- },
231
- reject: () => {
232
- console.log("Cancel delete")
233
- }
234
- })
235
- };
236
- const newData = ()=>{
237
- goTo(doc.getDocName(),'new')
238
- }
239
- const refresh = ()=>{
240
- $event('RefreshDocumentList',{documentName:doc.getDocName()})
241
- }
242
-
243
-
244
- if (id.value && id.value != 'new') {
245
- fetchRecord(id.value);
246
- }else{
247
- isReadOnly.value=false
248
- }
197
+ /************ start api methods ****************/
249
198
 
250
199
  <%for(let i=0;i<it.apiSettings.length;i++){%>
251
200
  <% let api = it.apiSettings[i] %>
@@ -270,4 +219,6 @@ if (id.value && id.value != 'new') {
270
219
 
271
220
  }
272
221
  <%}%>
222
+ /************ end api methods ****************/
223
+
273
224
  </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <Crud _id="new" @after-create="afterCreate"/>
2
+ <Crud :_id="_id" @after="after"/>
3
3
  </template>
4
4
  <script setup lang="ts">
5
5
  /**
@@ -10,9 +10,21 @@
10
10
  * author: Ks Tan
11
11
  */
12
12
  import Crud from './form.vue'
13
+ import {<%= it.typename %>} from '~/simpleapp/generate/types'
14
+ const props = defineProps<{_id:string}>();
15
+ const emits = defineEmits(["afterCreate"]);
13
16
 
14
- const emits = defineEmits(['afterCreate'])
15
- const afterCreate = (data:any)=>{
16
- emits('afterCreate',data)
17
- }
17
+ const after = (actionName: string, data: <%= it.typename %>, result: any) => {
18
+ switch (actionName) {
19
+ case "new":
20
+ break;
21
+ case "create":
22
+ emits("afterCreate", data);
23
+ break;
24
+ case "update":
25
+ break;
26
+ case "delete":
27
+ break;
28
+ }
29
+ };
18
30
  </script>
@@ -81,13 +81,25 @@ export class <%= it.typename%>Client extends SimpleAppClient<<%= it.typename%>,<
81
81
  })
82
82
 
83
83
  }
84
- setNew = ()=>{
85
-
86
-
87
- const newdata = Default<%= it.typename%>(crypto.randomUUID())
88
- this.setData(newdata)
84
+ setNew = ()=>{
85
+ const newdata = Default<%= it.typename%>(crypto.randomUUID())
86
+ this.setData(newdata)
87
+ return true
89
88
  }
90
-
89
+ <%if(it.jsonschema.properties['readOnly'] || it.jsonschema.properties['documentStatus']){%>
90
+ public isReadOnly():boolean{
91
+ <%if(it.jsonschema.properties['readOnly']){%>
92
+ const readonly = this.data.value?.readOnly
93
+ if(readonly) return true
94
+ <%}%>
95
+ <%if(it.jsonschema.properties['documentStatus']){%>
96
+ const docstatus = this.data.value.documentStatus
97
+ const statussetting = this.schema['x-simpleapp-config'].allStatus?.find((item)=>item.status==docstatus)
98
+ if(statussetting && statussetting.readOnly) return true
99
+ <%}%>
100
+ return false
101
+ }
102
+ <%}%>
91
103
  <%Object.keys(it.jsonschema.properties).forEach(function(key) { %>
92
104
  <% let obj=it.jsonschema.properties[key] %>
93
105
 
@@ -96,26 +108,54 @@ export class <%= it.typename%>Client extends SimpleAppClient<<%= it.typename%>,<
96
108
  public add<%=key%> = () => {
97
109
 
98
110
  this.getReactiveData().value.<%= key %>.push(Default<%= it.typename%><%=capitalizeFirstLetter(key)%>(crypto.randomUUID()))
111
+ return this.getReactiveData().value.<%= key %>.length -1
99
112
  }
100
113
 
101
114
 
102
115
  <%}%>
103
116
  <%})%>
104
117
 
118
+
119
+ public getActions(){
120
+ const actions = super.getActions()
121
+ actions.docstatus=[
122
+ <%for(let i=0;i<it.docStatusSettings.length;i++){%>
123
+ <% let setting = it.docStatusSettings[i] %>
124
+ '<%=setting.statusName%>',
125
+ <%}%>
126
+ ]
127
+ actions.api=[
128
+ <%for(let i=0;i<it.apiSettings.length;i++){%>
129
+ <% let api = it.apiSettings[i] %>
130
+ '<%=api.action%>',
131
+ <%}%>
132
+ ]
133
+ return actions
134
+ }
135
+
136
+
105
137
  /*****************************begin x-document-api code*****************************************/
106
138
 
107
139
  <%for(let i=0;i<it.apiSettings.length;i++){%>
108
140
  <% let api = it.apiSettings[i] %>
109
- async run<%=capitalizeFirstLetter(api.action)%>(<% if(api.entryPoint && api.entryPoint.includes(':')) {%>
110
- <%let subpath = api.entryPoint.split('/')%>
111
- <% for(let a=0;a<subpath.length;a++){%>
112
- <%const partstr = subpath[a]%>
113
- <%if(partstr.includes(':')){%>
114
- <% const paraname = partstr.replace(':','') %>
115
- <%=paraname%>: string,
116
- <%}%>
117
- <%}%>
118
- <%}%>
141
+ async run<%=capitalizeFirstLetter(api.action)%>(
142
+ <% if(api.entryPoint && api.entryPoint.includes(':')) {%>
143
+ <%let subpath = api.entryPoint.split('/')%>
144
+ <% for(let a=0;a<subpath.length;a++){%>
145
+ <%const partstr = subpath[a]%>
146
+ <%if(partstr.includes(':')){%>
147
+ <% const paraname = partstr.replace(':','') %>
148
+ <%=paraname%>: string,
149
+ <%}%>
150
+ <%}%>
151
+ <%}%>
152
+ <% if(api.queryPara && api.queryPara.length>0) {%>
153
+ <%for(let j=0; j<api.queryPara.length ; j++){%>
154
+ <%=api.queryPara[j]%>: string,
155
+ <%}%>
156
+ <%}%>
157
+
158
+
119
159
  <% if(['post','put','patch'].includes(api.method)){ %>data:any<%}%>
120
160
  ){
121
161
  //const recordid: string = this.data.value._id ?? '';
@@ -236,7 +276,7 @@ export class <%= it.typename%>Client extends SimpleAppClient<<%= it.typename%>,<
236
276
  /***************************** begin document status code*****************************************/
237
277
  <%for(let i=0;i<it.docStatusSettings.length;i++){%>
238
278
  <% let setting = it.docStatusSettings[i] %>
239
- async setStatus<%=capitalizeFirstLetter(setting.status)%>(id:string,data:<%= it.typename%>,runValidate:boolean=false) {
279
+ async setStatus<%=capitalizeFirstLetter(setting.status)%>(id?:string,data:<%= it.typename%>,runValidate:boolean=false) {
240
280
  const {$event} =useNuxtApp()
241
281
  if(runValidate){
242
282
  const errors = this.validateFailed();
@@ -90,6 +90,9 @@ export class SimpleAppService<T extends { _id?: string }> {
90
90
  this.data = { ...newdata };
91
91
  return this;
92
92
  };
93
+ public isReadOnly(): boolean {
94
+ return false;
95
+ }
93
96
  reCalculateValue(data: T) {}
94
97
  getIsolationFilter = (appuser: UserContext) => {
95
98
  let isolationFilter = {};
@@ -506,7 +509,7 @@ export class SimpleAppService<T extends { _id?: string }> {
506
509
  .session(dbsession);
507
510
  appuser.addUpdatedRecordId(this.documentName, data._id);
508
511
  await this.hook(appuser, HookType.afterUpdate, result);
509
- return await this.findById(appuser,id);
512
+ return await this.findById(appuser, id);
510
513
  } catch (err) {
511
514
  throw new InternalServerErrorException(err.message);
512
515
  }
@@ -593,8 +596,11 @@ export class SimpleAppService<T extends { _id?: string }> {
593
596
  await this.hook(appuser, HookType.afterSetStatus, createresult);
594
597
  return createresult;
595
598
  } else {
596
- const updateresult = await this.findIdThenUpdate(appuser, id, data);
597
- await this.hook(appuser, HookType.afterSetStatus, data);
599
+ const originalresult = await this.findById(appuser,id)
600
+ const newdata = {...originalresult,...data}
601
+ const updateresult = await this.findIdThenUpdate(appuser, id, newdata);
602
+ const finaldata = await this.findById(appuser,id)
603
+ await this.hook(appuser, HookType.afterSetStatus, finaldata);
598
604
  return updateresult;
599
605
  }
600
606
  }
@@ -56,3 +56,7 @@ input {
56
56
  .btn-warn {
57
57
  @apply btn bg-warning-600 hover:bg-warning-400
58
58
  }
59
+
60
+ .simpleapp-input-label{
61
+ @apply text-left
62
+ }
@@ -24,7 +24,8 @@ const items = computed(()=>{
24
24
  pathlabel = getUserProfile().branchName
25
25
  data.push ({ label: pathlabel })
26
26
  }else{
27
- pathlabel = t(p)
27
+
28
+ pathlabel = useNuxtApp().$i18n.te(p) ? t(p) :p
28
29
  data.push ({ label: pathlabel , url:pathurl})
29
30
  }
30
31
 
@@ -1,6 +1,6 @@
1
1
  <template >
2
- <span>{{ toLocalDate(modelValue) }}</span>
2
+ <span>{{ toLocalDate(value??'') }}</span>
3
3
  </template>
4
4
  <script lang="ts" setup>
5
- const modelValue = defineModel()
5
+ const props = defineProps<{value?:string}>()
6
6
  </script>
@@ -1,14 +1,23 @@
1
1
  <template>
2
2
  <span v-if="setting?.collection" @click="viewRecord" class="text-primary-700 hover:text-primary-500 cursor-pointer">
3
- {{modelValue?.label}}
3
+ {{ displayText }}
4
4
  </span>
5
- <span v-else>{{modelValue?.label || modelValue}}</span>
5
+ <span v-else>{{ displayText }}</span>
6
6
  </template>
7
7
  <script setup lang="ts">
8
+ import { ForeignKey } from '~/types';
8
9
 
9
10
 
10
- const modelValue = defineModel<{label:string,_id:string}>()
11
- const props = defineProps<{setting:any}>()
11
+ type SettingProp = {collection:string, displayField?:string}
12
+ const modelValue = defineModel<ForeignKey>()
13
+ const props = defineProps<{setting:SettingProp}>()
14
+ const displayText = computed(()=>{
15
+ const s = props.setting
16
+ if (!modelValue.value) return undefined
17
+ else if(!s.collection) return modelValue.value
18
+ else if(s.displayField) return modelValue.value[s.displayField]
19
+ else return modelValue.value.label
20
+ })
12
21
  const {$event} = useNuxtApp()
13
22
  const viewer=ref()
14
23
  const viewRecord = () => {
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <AutoComplete v-model="modelValue" v-if="!readonly" ref="autocompleteinput"
3
- forceSelection optionLabel="label"
3
+ forceSelection optionLabel="label"
4
+ @focus="($event.target as HTMLInputElement).select()"
4
5
  @item-select="pickAutoComplete"
5
6
  @complete="getListFromAutocompleteApi"
6
7
  :placeholder="t('keyword')"
@@ -128,13 +129,14 @@ const openViewer = (readonly:boolean) =>{
128
129
  const schema:SchemaType = remotedoc.docClass.getSchema()
129
130
  const labelfield = schema['x-simpleapp-config'].documentTitle as string
130
131
  const codefield = schema['x-simpleapp-config'].uniqueKey as string
132
+ const docname = props.setting.fieldsetting['x-foreignkey']
131
133
  $event('ViewRecord',{
132
134
  _id: modelValue.value?._id as string,
133
135
  eventId: crypto.randomUUID(),
134
- label: modelValue.value?.label as string,
136
+ label: (readonly ? modelValue.value?.label : `${t('new') + ' '+ t(docname) }`) as string,
135
137
  readonly:readonly,
136
- viewer : getDocument(props.setting.fieldsetting['x-foreignkey'])?.viewer,
137
- documentName: props.setting.fieldsetting['x-foreignkey'],
138
+ viewer : getDocument(docname)?.viewer,
139
+ documentName: docname,
138
140
 
139
141
  //after create, auto copy value into auto complete
140
142
  afterCreate:(data:any)=>{
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div v-if="schema" class="flex flex-col">
3
3
  <div v-if="hidelabel"></div>
4
- <label v-else-if="error" class="text-danger-600 overflow-hidden" :for="uuid">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="text-danger-600">*</span></label>
5
- <label v-else :for="uuid" class="whitespace-nowrap text-gray-500 truncate">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="text-danger-600">*</span></label>
4
+ <label v-else-if="error" class="simpleapp-input-label text-danger-600 overflow-hidden" :for="uuid">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="text-danger-600">*</span></label>
5
+ <label v-else :for="uuid" class="simpleapp-input-label whitespace-nowrap text-gray-500 truncate">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="text-danger-600">*</span></label>
6
6
 
7
7
  <!-- <div :uuid="uuid" >{{ modelValue }}</div> -->
8
8
  <!-- <div v-if="typeof modelValue =='object' && typeof modelValue['_id']!='undefined' && typeof modelValue['label']!='undefined' && readonly ==true " :uuid="uuid" class="simpleapp-value-readonly">{{ modelValue['label'] }}</div> -->
@@ -57,7 +57,7 @@ const readonlyclass="simpleapp-value-readonly"
57
57
  let schema:any
58
58
 
59
59
  const fielddesc = computed(()=>{
60
- return props.description ?? schema.description ?? ''
60
+ return props.description ?? ''
61
61
  })
62
62
 
63
63
  if(props.setting.fieldsetting && props.setting.fieldsetting.type){