@simitgroup/simpleapp-generator 1.3.1-alpha → 1.3.2-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/generate.js +5 -1
  2. package/dist/generate.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/generate.ts +5 -1
  5. package/templates/basic/nest/apischema.ts.eta +2 -3
  6. package/templates/basic/nest/controller.ts.eta +3 -4
  7. package/templates/basic/nest/default.ts.eta +6 -0
  8. package/templates/basic/nest/jsonschema.ts.eta +3 -4
  9. package/templates/basic/nest/model.ts.eta +3 -5
  10. package/templates/basic/nest/processor.ts.eta +3 -4
  11. package/templates/basic/nest/service.ts.eta +8 -1
  12. package/templates/basic/nest/type.ts.eta +3 -4
  13. package/templates/basic/nuxt/default.ts.eta +6 -0
  14. package/templates/basic/nuxt/pages.form.vue.eta +2 -1
  15. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +3 -4
  16. package/templates/nest/.env._eta +2 -1
  17. package/templates/nest/.gitignore.eta +5 -0
  18. package/templates/nest/src/simpleapp/.gitignore.eta +5 -0
  19. package/templates/nest/src/simpleapp/apischemas/index.ts._eta +6 -1
  20. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +7 -0
  21. package/templates/nest/src/simpleapp/generate/apischemas/simpleapp.apischema.ts.eta +1 -1
  22. package/templates/nest/src/simpleapp/generate/workflow/formschema/index.ts.eta +6 -0
  23. package/templates/nest/src/simpleapp/generate/workflow/workflow.apischema.ts.eta +6 -0
  24. package/templates/nest/src/simpleapp/generate/workflow/workflow.config.ts.eta +6 -0
  25. package/templates/nest/src/simpleapp/generate/workflow/workflow.controller.ts.eta +6 -0
  26. package/templates/nest/src/simpleapp/generate/workflow/workflow.delegate.ts.eta +6 -0
  27. package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +2 -4
  28. package/templates/nest/src/simpleapp/generate/workflow/workflow.type.ts.eta +4 -5
  29. package/templates/nest/src/simpleapp/generate/workflow/workflow.userservice.ts.eta +6 -0
  30. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +1 -1
  31. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +1 -1
  32. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +1 -1
  33. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +1 -1
  34. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +1 -1
  35. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +1 -1
  36. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +1 -1
  37. package/templates/nest/src/simpleapp/services/org.service.ts.eta +1 -1
  38. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +1 -1
  39. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +1 -1
  40. package/templates/nest/src/simpleapp/services/user.service.ts.etax +1 -1
  41. package/templates/nest/src/simpleapp/types/index.ts._eta +6 -1
  42. package/templates/nest/src/simpleapp/workflows/listeners/simpleapp.listener.ts._eta +4 -5
  43. package/templates/nest/test/app.e2e-spec.ts.eta +6 -0
  44. package/templates/nest/test/setting.ts.eta +6 -0
  45. package/templates/nuxt/.env._eta +2 -1
  46. package/templates/nuxt/.gitignore.eta +5 -0
  47. package/templates/nuxt/{app.vue.eta → app.vue._eta} +14 -14
  48. package/templates/nuxt/assets/css/calendar.css._eta +6 -1
  49. package/templates/nuxt/assets/css/listview.css._eta +17 -0
  50. package/templates/nuxt/assets/css/style.css._eta +6 -4
  51. package/templates/nuxt/assets/css/tailwind.css._eta +6 -0
  52. package/templates/nuxt/assets/primevue/passthrough.ts._eta +13 -8
  53. package/templates/nuxt/components/button/ButtonDanger.vue._eta +16 -4
  54. package/templates/nuxt/components/button/ButtonDefault.vue._eta +17 -4
  55. package/templates/nuxt/components/button/ButtonMultiple.vue._eta +8 -2
  56. package/templates/nuxt/components/button/ButtonPrimary.vue._eta +17 -5
  57. package/templates/nuxt/components/button/ButtonText.vue._eta +21 -0
  58. package/templates/nuxt/components/button/ButtonWarning.vue._eta +17 -5
  59. package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +7 -3
  60. package/templates/nuxt/components/calendar/CalendarSmall.vue.eta +6 -0
  61. package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +3 -3
  62. package/templates/nuxt/components/event/EventDecision.vue._eta +3 -3
  63. package/templates/nuxt/components/event/EventDocumentViewer.vue._eta +3 -3
  64. package/templates/nuxt/components/event/EventNotification.vue._eta +3 -3
  65. package/templates/nuxt/components/form/FormBranch.vue.eta +4 -3
  66. package/templates/nuxt/components/header/HeaderBar.vue._eta +7 -1
  67. package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +6 -0
  68. package/templates/nuxt/components/header/HeaderSelectBranch.vue.eta +6 -0
  69. package/templates/nuxt/components/header/button/HeaderButtonHome.vue.eta +6 -1
  70. package/templates/nuxt/components/header/button/HeaderButtonLogout.vue.eta +9 -1
  71. package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +7 -0
  72. package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +6 -0
  73. package/templates/nuxt/components/header/button/task/HeaderButtonTaskItem.vue.eta +7 -0
  74. package/templates/nuxt/components/header/button/task/HeaderButtonTaskList.vue.eta +6 -0
  75. package/templates/nuxt/components/list/ListDocument.vue.eta +6 -0
  76. package/templates/nuxt/components/list/ListDocumentTable.vue.eta +6 -0
  77. package/templates/nuxt/components/list/ListView.vue.eta +60 -47
  78. package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +9 -3
  79. package/templates/nuxt/components/overlay/OverlayPanelWithToolBar.vue.eta +44 -0
  80. package/templates/nuxt/components/overlay/OverlaySideBarCrud.vue.eta +10 -1
  81. package/templates/nuxt/components/overlay/OverlayViewer.vue.eta +7 -1
  82. package/templates/nuxt/components/page/PageDocList.vue.eta +23 -14
  83. package/templates/nuxt/components/renderer/index.ts._eta +3 -3
  84. package/templates/nuxt/components/session/SessionBlock.vue.eta +6 -0
  85. package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +7 -1
  86. package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +6 -0
  87. package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +6 -0
  88. package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +7 -2
  89. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +21 -17
  90. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +6 -0
  91. package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +6 -1
  92. package/templates/nuxt/components/simpleApp/SimpleAppJsonSchemaForm.vue.eta +6 -0
  93. package/templates/nuxt/components/table/TableDocuments.vue.eta +6 -0
  94. package/templates/nuxt/components/text/TextDanger.vue._eta +8 -0
  95. package/templates/nuxt/components/text/TextSubtitle.vue._eta +8 -0
  96. package/templates/nuxt/components/text/TextTitle.vue._eta +8 -0
  97. package/templates/nuxt/components/user/UserButtonCreateTenant.vue.eta +6 -0
  98. package/templates/nuxt/components/user/UserButtonPermissionInfo.vue.eta +6 -0
  99. package/templates/nuxt/components/user/UserInvitation.vue.eta +22 -16
  100. package/templates/nuxt/components/user/UserProfileListItem.vue.eta +6 -1
  101. package/templates/nuxt/components/user/UserTenantPicker.vue.eta +6 -1
  102. package/templates/nuxt/components/workflow/forms/dynamicfield.vue._eta +7 -0
  103. package/templates/nuxt/components/workflow/forms/index.ts._eta +7 -0
  104. package/templates/nuxt/components/workflow/forms/simpleapprove.vue._eta +6 -0
  105. package/templates/nuxt/composables/date.generate.ts.eta +6 -3
  106. package/templates/nuxt/composables/docformat.generate.ts.eta +6 -0
  107. package/templates/nuxt/composables/getDocument.generate.ts.eta +6 -0
  108. package/templates/nuxt/composables/getTenant.generate.ts.eta +6 -0
  109. package/templates/nuxt/composables/getUserStore.generate.ts.eta +6 -0
  110. package/templates/nuxt/composables/goTo.generate.ts.eta +6 -0
  111. package/templates/nuxt/composables/logout.generate.ts.eta +6 -0
  112. package/templates/nuxt/composables/notifications.generate.ts.eta +6 -0
  113. package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +6 -0
  114. package/templates/nuxt/composables/roles.generate.ts.eta +6 -0
  115. package/templates/nuxt/composables/screensize.generate.ts.eta +6 -0
  116. package/templates/nuxt/composables/stringHelper.generate.ts.eta +6 -0
  117. package/templates/nuxt/composables/themes.generate.ts.eta +6 -0
  118. package/templates/nuxt/composables/workflow.generate.ts.eta +6 -0
  119. package/templates/nuxt/error.vue._eta +6 -1
  120. package/templates/nuxt/i18n.config.ts.eta +6 -0
  121. package/templates/nuxt/lang/cn.ts._eta +6 -0
  122. package/templates/nuxt/lang/en.ts.eta +1 -0
  123. package/templates/nuxt/layouts/default.vue._eta +6 -0
  124. package/templates/nuxt/layouts/loginlayout.vue._eta +9 -1
  125. package/templates/nuxt/layouts/mobile.vue._eta +6 -0
  126. package/templates/nuxt/middleware/30.acl.global.ts.eta +1 -1
  127. package/templates/nuxt/nuxt.config.ts._eta +4 -5
  128. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/[id].vue.eta +4 -5
  129. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +7 -0
  130. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +6 -1
  131. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +6 -1
  132. package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +4 -6
  133. package/templates/nuxt/pages/[xorg]/index.vue._eta +4 -5
  134. package/templates/nuxt/pages/[xorg]/organization/viewer.vue.eta +8 -0
  135. package/templates/nuxt/pages/[xorg]/organization.vue.eta +6 -1
  136. package/templates/nuxt/pages/[xorg]/profile.vue.eta +6 -0
  137. package/templates/nuxt/pages/[xorg]/reports/index.vue._eta +18 -0
  138. package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +4 -5
  139. package/templates/nuxt/pages/[xorg]/user/form.vue.eta +6 -1
  140. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +4 -5
  141. package/templates/nuxt/pages/[xorg]/user/new.vue.eta +4 -5
  142. package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +4 -5
  143. package/templates/nuxt/pages/[xorg]/user.vue.eta +4 -4
  144. package/templates/nuxt/pages/index.vue._eta +4 -4
  145. package/templates/nuxt/pages/login.vue._eta +4 -4
  146. package/templates/nuxt/pages/profile.vue.eta +8 -1
  147. package/templates/nuxt/pages/relogin.vue.eta +6 -0
  148. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +1 -1
  149. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +1 -1
  150. package/templates/nuxt/server/api/[xorg]/[...].ts.eta +1 -1
  151. package/templates/nuxt/server/api/auth/[...].ts.eta +1 -1
  152. package/templates/nuxt/server/api/auth/logout.ts.eta +1 -1
  153. package/templates/nuxt/server/api/profile/[...].ts.eta +1 -2
  154. package/templates/nuxt/server/api/profile/index.ts.eta +1 -1
  155. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +2 -4
  156. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +1 -1
  157. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +1 -1
  158. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +1 -1
  159. package/templates/nuxt/simpleapp/generate/defaults/index.ts.eta +7 -0
  160. package/templates/nuxt/simpleapp/generate/types/index.ts.eta +7 -0
  161. package/templates/nuxt/simpleapp/workflows/forms/index.ts._eta +6 -0
  162. package/templates/nuxt/simpleapp/workflows/forms/simpleapprove.jsonschema.ts._eta +6 -0
  163. package/templates/nuxt/tailwind.config.ts._eta +6 -0
  164. package/templates/nuxt/types/calendar.ts.eta +2 -3
  165. package/templates/nuxt/types/documentlist.ts.eta +3 -3
  166. package/templates/nuxt/types/events.ts.eta +2 -2
  167. package/templates/nuxt/types/index.ts._eta +4 -5
  168. package/templates/nuxt/types/listview.ts.eta +2 -2
  169. package/templates/nuxt/types/notifications.ts.eta +2 -2
  170. package/templates/nuxt/types/others.ts.eta +2 -2
  171. package/templates/nuxt/types/schema.ts.eta +2 -2
  172. package/templates/nuxt/types/simpleappinput.ts.eta +2 -2
  173. package/templates/nuxt/types/user.ts.eta +2 -2
  174. package/templates/nuxt/types/workflow.ts.eta +2 -2
  175. package/templates/project/lang/default._json +1 -1
  176. package/templates/project/sharelibs/hello.ts._eta +6 -0
  177. package/templates/project/sharelibs/index.ts.eta +5 -0
  178. package/tsconfig.tsbuildinfo +1 -1
  179. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocomplete.vue +0 -135
  180. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocompletemulti.vue +0 -73
  181. package/templates/nuxt/components/simpleApp/pending/SimpleAppCalendar.vue +0 -55
  182. package/templates/nuxt/components/simpleApp/pending/SimpleAppCheckbox.vue +0 -29
  183. package/templates/nuxt/components/simpleApp/pending/SimpleAppChip.vue +0 -28
  184. package/templates/nuxt/components/simpleApp/pending/SimpleAppColor.vue +0 -41
  185. package/templates/nuxt/components/simpleApp/pending/SimpleAppDocumentNo.vue +0 -90
  186. package/templates/nuxt/components/simpleApp/pending/SimpleAppDynamicInput.vue +0 -29
  187. package/templates/nuxt/components/simpleApp/pending/SimpleAppEditor.vue +0 -31
  188. package/templates/nuxt/components/simpleApp/pending/SimpleAppInputTable.vue +0 -83
  189. package/templates/nuxt/components/simpleApp/pending/SimpleAppList.vue +0 -38
  190. package/templates/nuxt/components/simpleApp/pending/SimpleAppListmulti.vue +0 -41
  191. package/templates/nuxt/components/simpleApp/pending/SimpleAppNumber.vue +0 -43
  192. package/templates/nuxt/components/simpleApp/pending/SimpleAppPassword.vue +0 -41
  193. package/templates/nuxt/components/simpleApp/pending/SimpleAppRadio.vue +0 -42
  194. package/templates/nuxt/components/simpleApp/pending/SimpleAppRating.vue +0 -41
  195. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelect.vue +0 -48
  196. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelectmulti.vue +0 -39
  197. package/templates/nuxt/components/simpleApp/pending/SimpleAppSlider.vue +0 -42
  198. package/templates/nuxt/components/simpleApp/pending/SimpleAppSwitch.vue +0 -30
  199. package/templates/nuxt/components/simpleApp/pending/SimpleAppText.vue +0 -59
  200. package/templates/nuxt/components/simpleApp/pending/SimpleAppTextarea.vue +0 -41
  201. package/templates/nuxt/components/simpleApp/pending/SimpleAppValue.vue +0 -86
  202. package/templates/nuxt/components/simpleApp/pending/helper.ts-backup +0 -90
  203. package/templates/nuxt/components/simpleApp/pending/type.ts-backup +0 -32
  204. package/templates/nuxt/components/suspended/CrudNestedDoc.vue.eta +0 -172
  205. package/templates/nuxt/components/suspended/CrudSimple.vue.eta +0 -181
  206. package/templates/nuxt/components/suspended/Menus.vue.eta +0 -58
  207. package/templates/nuxt/components/suspended/Spinner.vue.eta +0 -9
  208. package/templates/nuxt/lang/df.ts.etaxxxx +0 -16
  209. package/templates/project/sharelibs/hello.ts.eta +0 -1
@@ -1,39 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <MultiSelect v-model="modelValue"
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-bind="$attrs"
8
- :optionValue="optionValue"
9
- :optionLabel="optionLabel"
10
- :path="setting.instancepath"
11
- :options="options"
12
- multiple
13
- />
14
- </FieldContainer>
15
- </template>
16
- <script lang="ts" setup>
17
- import {computed,watch,ref} from 'vue'
18
- import MultiSelect from 'primevue/multiselect';
19
- import FieldContainer from './SimpleAppFieldContainer.vue'
20
- import {prepareList,simpleArrayToObject} from './helper'
21
- import type {SimpleAppFieldSetting} from './type'
22
- import type { JSONSchema7 } from 'json-schema';
23
- const modelValue = defineModel()
24
- const props = defineProps<{
25
- label?:string,
26
- description?:string,
27
- error?:string,
28
- setting:SimpleAppFieldSetting,
29
- optionLabel?:string,
30
- optionValue?:string,
31
- instancepath?:string,
32
- options?:any[]
33
- }>()
34
- const optionValue = props.optionValue ?? 'label'
35
- const optionLabel = props.optionLabel ?? 'value'
36
- // console.log("appselectmulti",props.description, props.setting.fieldsetting)
37
- const options = prepareList('anyOf',props.setting.fieldsetting.items,optionLabel,optionValue,props.options,)
38
- // props.setting.fieldsetting.items
39
- </script>
@@ -1,42 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <Slider
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :path="setting.instancepath"
10
- ></Slider>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import Slider from 'primevue/slider';
16
-
17
-
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
- const modelValue = defineModel()
20
- const props = defineProps<{
21
- label?:string,
22
- description?:string,
23
- error?:string,
24
- setting:any,
25
- instancepath?:string,
26
- }>()
27
-
28
- // const modelValue = defineModel<{modelValue?:string}>()
29
- // console.log(modelValue.value)
30
-
31
-
32
- // const emits = defineEmits(['update:modelValue'])
33
- // const onchange=(e:any)=>{
34
- // emits('update:modelValue',e.target.value)
35
- // }
36
-
37
-
38
- // watch(props ,(after,before)=>{
39
- // // console.log("B4",before,"after",after)
40
- // inputvalue.value=after.modelValue
41
- // })
42
- </script>
@@ -1,30 +0,0 @@
1
-
2
-
3
- <template>
4
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
5
- <InputSwitch
6
- class="simpleapp-inputswitch"
7
- :inputId="slotprops.uuid"
8
- v-model="modelValue"
9
- :binary="true"
10
- v-bind="$attrs"
11
- :path="setting.instancepath"
12
- ></InputSwitch>
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- // import {Ref} from 'vue'
17
- import InputSwitch from 'primevue/inputswitch';
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
-
20
- const modelValue = defineModel<boolean>()
21
- const props = defineProps<{
22
- label?:string,
23
- id?:string,
24
- description?:string,
25
- error?:string,
26
- setting:any,
27
- instancepath?:string,
28
- }>()
29
-
30
- </script>
@@ -1,59 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer :hidelabel="hidelabel" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <InputText v-if="slotprops.error"
5
- class="simpleapp-inputfield simpleapp-invalid-input"
6
- :id="slotprops.uuid"
7
- v-model="modelValue"
8
- :path="setting.instancepath"
9
- :type="type"
10
- :readonly="isReadonly"
11
- ></InputText>
12
- <InputText v-else
13
- class="simpleapp-inputfield"
14
- :id="slotprops.uuid"
15
- v-model="modelValue"
16
- :path="setting.instancepath"
17
- :type="type"
18
- :readonly="isReadonly"
19
- ></InputText>
20
- </FieldContainer>
21
- </template>
22
- <script lang="ts" setup>
23
- import {computed,watch,ref} from 'vue'
24
- import InputText from 'primevue/inputtext';
25
- import FieldContainer from './SimpleAppFieldContainer.vue'
26
- const modelValue = defineModel()
27
- const props = withDefaults( defineProps<{
28
- label?:string,
29
- description?:string,
30
- error?:string,
31
- setting:any,
32
- type?:string,
33
- instancepath?:string,
34
- hidelabel?: boolean
35
- readonly?: boolean
36
- }>(),{type:'text'})
37
-
38
- // const modelValue = defineModel<{modelValue?:string}>()
39
- // console.log(modelValue.value)
40
- const isReadonly = computed(()=>{
41
- if(props.readonly){
42
- return props.readonly
43
- }else if(props.setting.readonly){
44
- return props.setting.readonly
45
- }else{
46
- return false
47
- }
48
- })
49
- const emits = defineEmits(['change'])
50
- // const onchange=(e:any)=>{
51
- // emits('update:modelValue',e.target.value)
52
- // }
53
-
54
-
55
- watch(modelValue ,()=>{
56
- // props.setting.document.validateFailed()
57
- emits('change',modelValue.value)
58
- })
59
- </script>
@@ -1,41 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <Textarea
5
- class="simpleapp-inputfield"
6
- :id="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :autoResize="autoResize"
10
- :path="setting.instancepath"
11
- :readonly="isReadonly"
12
- ></Textarea>
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- import {computed,watch,ref} from 'vue'
17
- import Textarea from 'primevue/textarea';
18
-
19
- import FieldContainer from './SimpleAppFieldContainer.vue'
20
- const modelValue = defineModel()
21
- const props = defineProps<{
22
- label?:string,
23
- id?:string,
24
- description?:string,
25
- error?:string,
26
- setting:any,
27
- autoResize?:boolean,
28
- instancepath?:string,
29
- readonly?:boolean
30
-
31
- }>()
32
- const isReadonly = computed(()=>{
33
- if(props.readonly){
34
- return props.readonly
35
- }else if(props.setting.readonly){
36
- return props.setting.readonly
37
- }else{
38
- return false
39
- }
40
- })
41
- </script>
@@ -1,86 +0,0 @@
1
- <template>
2
- <div v-if="schema" :class="fieldcontainerclass">
3
-
4
- <div v-if="hidelabel"></div>
5
- <label v-else :for="uuid">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="input-error">*</span></label>
6
-
7
- <div :uuid="uuid" class="simpleapp-value-readonly">{{ modelValue }}</div>
8
-
9
-
10
- <small v-if="error" class="input-desc">{{ error }}</small>
11
- <small v-else class="input-desc">{{ fielddesc }}</small>
12
-
13
- <slot></slot>
14
- </div>
15
- <div v-else class="simpleapp-input-container">
16
- <label class="input-error">wrong path in getField()</label>
17
- <div class="input-error">{{ props.setting.path }}</div>
18
- </div>
19
- </template>
20
- <script setup lang="ts">
21
- import {camelCaseToWords} from './helper'
22
- import {computed,watch} from 'vue'
23
- import {ref} from 'vue'
24
- const modelValue = defineModel()
25
- const uuid = randomUUID()
26
- const fieldlabel = ref('')
27
- const fielddesc = ref('')
28
- const defaultcssclass='simpleapp-input-container'
29
- const fieldcontainerclass = ref(defaultcssclass)
30
- let instancepath = ref('')
31
- const props = defineProps<{
32
- label?: string,
33
- description?: string,
34
- instancepath?:string,
35
- hidelabel?:boolean,
36
- // error?:string,
37
- setting:any
38
- }>()
39
-
40
- // console.log('props.setting',props.setting.fieldsetting)
41
- let schema:any
42
- if(props.setting.fieldsetting && props.setting.fieldsetting.type){
43
-
44
- schema = props.setting.fieldsetting
45
- // console.log("schema setting",props.setting,schema)
46
- if(props?.instancepath) instancepath.value =props.instancepath
47
- else if(props.setting?.instancepath) instancepath.value = props.setting.instancepath
48
- else instancepath.value='/unknown'
49
-
50
- const fieldnamearr = instancepath.value.split('/')
51
- const fieldname = camelCaseToWords(fieldnamearr[fieldnamearr.length-1])
52
-
53
- if(props.label)fieldlabel.value = props.label
54
- else if (schema.title ) fieldlabel.value=schema.title
55
- else fieldlabel.value=fieldname
56
-
57
- if(props.description)fielddesc.value = props.description
58
- else if (schema?.description != 'undefined') fielddesc.value=schema.description
59
- else fielddesc.value=''
60
-
61
-
62
-
63
- }
64
- const errormsg = computed(()=>{
65
-
66
- props.setting.errors[instancepath.value]
67
- })
68
- const error = ref("")
69
- watch(props.setting.errors,(newvalue,oldvalue)=>{
70
- //it is array
71
- error.value=''
72
- if(newvalue[instancepath.value]){
73
- const errlist:any[] = newvalue[instancepath.value]
74
- for(let i=0;i<errlist.length;i++){
75
- error.value += errlist[i].message +','
76
- }
77
- fieldcontainerclass.value=defaultcssclass + ' input-error'
78
- }else{
79
- error.value=''
80
- fieldcontainerclass.value=defaultcssclass
81
- }
82
- // console.log("validation result",props.setting.instancepath,)
83
- // error.value = newvalue[props.setting.instancepath].message
84
- })
85
-
86
- </script>
@@ -1,90 +0,0 @@
1
- import type { JSONSchema7,JSONSchema7Definition } from 'json-schema';
2
- import type {ListOptionType} from './type'
3
- export const prepareList=(schemaComposition:string,fsetting:JSONSchema7Definition | JSONSchema7Definition[] | undefined,labelfield:string,valuefield:string,propsoptions?:any[],):ListOptionType[]=>{
4
- let options :ListOptionType[] = []
5
- let fieldsetting:JSONSchema7 = {} as JSONSchema7
6
- Object.assign(fieldsetting,fsetting)
7
- // {...fsetting} as JSONSchema7
8
- try{
9
- const convertToList=(list:any[]):ListOptionType[]=>{
10
- let opts :ListOptionType[] = []
11
- if(list.length>0 && typeof list[0]=='object'){
12
- for(let i=0;i<list.length;i++){
13
- const t = list[i]
14
- const item = {value:t[valuefield], label:t[labelfield]}
15
- opts.push(item)
16
- }
17
- }else{
18
- opts = simpleArrayToObject(list)
19
- }
20
- return opts
21
- }
22
-
23
- if(Array.isArray(propsoptions)){
24
- if(propsoptions.length>0 && typeof propsoptions[0]== 'string'){
25
- options = simpleArrayToObject(propsoptions)
26
- }else{
27
- options = convertToList(propsoptions)
28
- }
29
-
30
- }
31
- else if(Array.isArray(fieldsetting.enum)){
32
-
33
- options = simpleArrayToObject(fieldsetting.enum)
34
- }else{
35
- let list:JSONSchema7Definition[]|undefined=[]
36
- switch(schemaComposition){
37
- case 'anyOf':
38
- list=fieldsetting.anyOf
39
- break;
40
- case 'oneOf':
41
- list=fieldsetting.oneOf
42
- break;
43
- default:
44
- break;
45
- }
46
- // console.log("get from anyof")
47
- // let list:any[]=fieldsetting.anyOf
48
- options = convertToList(list??[])
49
- }
50
-
51
- // else if(fieldsetting.oneOf && Array.isArray(fieldsetting.oneOf)){
52
- // let list:any[]=fieldsetting.oneOf
53
- // options = convertToList(list)
54
- // }
55
- //try validate data
56
- if(options.length>0){
57
- const d:any = options[0]
58
- if(typeof d.label=='undefined'){
59
- const errormsg = `undefine property '${labelfield}', correct 'optionLabel'`
60
- console.error(errormsg,fieldsetting)
61
- options=[{value:'',label:errormsg}]
62
- }
63
- if(typeof d.value=='undefined'){
64
- const errormsg = `undefine property '${valuefield}', correct 'optionValue`
65
- console.error(errormsg,fieldsetting)
66
- options=[{value:'',label:errormsg}]
67
- }
68
- }
69
- return options;
70
- }catch(error){
71
- console.error("xxxxx",error)
72
- return []
73
- }
74
- }
75
-
76
- export const simpleArrayToObject=(list:any[]):ListOptionType[]=>{
77
- let options :ListOptionType[] = []
78
- for (let i =0; i< list.length; i++){
79
- const value:string = list[i].toString()
80
- let item :any={value:value,label:value}
81
- options.push(item)
82
- }
83
- return options
84
- }
85
-
86
- export const camelCaseToWords = (s: string) =>{
87
- const result = s.replace(/([A-Z])/g, ' $1');
88
- return result.charAt(0).toUpperCase() + result.slice(1);
89
- }
90
-
@@ -1,32 +0,0 @@
1
- import { SimpleAppClient } from './SimpleAppClient';
2
- import type { JSONSchema7,JSONSchema7Definition } from 'json-schema';
3
- export type ListOptionType = {
4
- value?: string
5
- label?: string
6
- }
7
- export enum InputTableColumnType {
8
- 'field'='field',
9
- 'button'='button',
10
- 'checkbox'='checkbox',
11
- 'renderer'='renderer'
12
- }
13
- export type InputTableColumn={
14
- type:InputTableColumnType,
15
- title?:string
16
- field?:string
17
- renderer?:Function
18
- style?:string
19
- readonly?:boolean
20
- }
21
- export type SimpleAppFieldSetting= {
22
- path: string,
23
- instancepath: string,
24
- fieldsetting:JSONSchema7
25
- document:SimpleAppClient<any,any>
26
- modelObject: any,
27
- modelField: string,
28
- isrequired: boolean,
29
- readonly?:boolean
30
- // errors: props.document.getErrors()
31
- }
32
- // x.fieldsetting.pro
@@ -1,172 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * This file was automatically generated by simpleapp generator during initialization.
4
- * DO NOT MODIFY IT BY HAND.
5
- * last change 2023-09-09
6
- * author: Ks Tan
7
- */
8
- import {ref} from 'vue'
9
- import _ from 'lodash'
10
- import {SearchBody} from '~/types'
11
- import { SimpleAppClient } from '../simpleapp/generate/clients/SimpleAppClient' //'../SimpleAppClient';
12
- // import SimpleAppForm from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppForm.vue';
13
- // import SimpleAppDatatable from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppDatatable.vue';
14
- import Dialog from 'primevue/dialog';
15
- // import axios from 'axios'
16
- import ProgressSpinner from 'primevue/progressspinner';
17
- import ConfirmPopup from 'primevue/confirmpopup';
18
- import { useConfirm } from "primevue/useconfirm";
19
-
20
- const confirm = useConfirm();
21
- const props = defineProps<{
22
- document:SimpleAppClient<any,any>
23
- listColumns:string[]
24
- path:string
25
- title:string
26
- }>()
27
-
28
- const visible = ref(false)
29
- const obj = props.document
30
- const resourcename = ref( _.upperFirst(props.document.getDocName()))
31
- const data = obj.getReactiveData()
32
- const disabled=ref(false)
33
- const recordlist = ref();
34
- const router = useRouter()
35
- const route = useRoute()
36
- const filters = ref()
37
- const popuptitle = ref("New "+props.title)
38
- const {$event} = useNuxtApp()
39
- const systemwindows = ref(false)
40
- const currentjsonschema:any = props.document.getSchema()
41
- if(['none'].includes(currentjsonschema['x-isolation-type'])){
42
- systemwindows.value=true
43
- }
44
- watch(visible,(newvalue )=>{
45
- if(newvalue == false){
46
- if(data.value.created!=''){
47
- newData()
48
- }
49
- }
50
-
51
- })
52
- defineShortcuts({
53
- 'ctrl_enter': () => newData()
54
- })
55
- const refresh = () => {
56
- const searchbody: SearchBody = {
57
- fields: props.listColumns.concat(['created']),
58
- // sorts:props.sorts
59
- }
60
- obj.search(searchbody).then((res:any) => {
61
- recordlist.value = res;
62
- disabled.value=false
63
- });
64
- };
65
- const newData = () => {
66
- router.push({ path: `${props.path}` })
67
- obj.setNew()
68
- visible.value=true;
69
- $event("newRecord")
70
- };
71
-
72
- const triggerEdit = (data: any) => {
73
- let id = data._id.toString()
74
- router.push({ path: `${props.path}/${id}` })
75
- };
76
- const editRecord = (id:string) => {
77
- obj.getById(id).then(()=>{
78
- visible.value=true
79
- popuptitle.value = "Edit "+props.title
80
- $event("editRecord",id)
81
- });
82
-
83
- };
84
- const createData =()=>{
85
- disabled.value=true
86
- obj.create().then(()=>{
87
- visible.value=false
88
- refresh()
89
- }).catch(err=>{
90
- console.error(err)
91
- }).finally(()=>disabled.value=false)
92
- }
93
- const updateData =()=>{
94
- disabled.value=true
95
- obj.update().then(()=>{
96
- visible.value=false
97
- refresh()
98
- }).catch(err=>{
99
- console.error(err)
100
- }).finally(()=>disabled.value=false)
101
- }
102
-
103
- const deleteData = (event:Event) => {
104
-
105
- confirm.require({
106
- target: event.currentTarget as HTMLElement,
107
- message:'Delete?',
108
- icon: 'pi pi-exclamation-triangle',
109
- acceptClass: 'p-button-danger',
110
- accept: ()=>{
111
- disabled.value=true
112
- obj.delete(data.value._id ?? "").then(()=>visible.value=false).finally(() => {
113
- refresh();
114
- });
115
- },
116
- reject: () => {
117
- console.log("Cancel delete")
118
- }
119
- })
120
- };
121
-
122
- onNuxtReady(()=>{
123
- if (route.params.id) {
124
- const recordid:string = route.params.id.toString()
125
- editRecord(recordid)
126
- }
127
- refresh();
128
- })
129
-
130
-
131
- </script>
132
-
133
- <template>
134
- <div class="simpleapp-crudnesteddocument">
135
- <h1 v-if="systemwindows" class="error-text text-center">* It is system administration screen</h1>
136
- <Button class="btn-primary" @click="newData" v-tooltip="'Add new(ctrl+enter)'" v-if="canPerform(resourcename,'create')">New</Button>
137
- <SimpleAppDatatable
138
- @row-dblclick="triggerEdit"
139
- v-model="recordlist"
140
- :setting="{}"
141
- :columns="listColumns"
142
- >
143
- <Column header=" ">
144
- <template #body="{index,data}">
145
- <Button icon="pi pi-pencil" class="btn-primary" @click="triggerEdit(data)"></Button>
146
- </template></Column>
147
- </SimpleAppDatatable>
148
-
149
-
150
- </div>
151
-
152
- <Dialog v-model:visible="visible" modal :header="popuptitle" class="crudsimple-dialog" :autoZIndex="false" :style="{zIndex:100, width: '80vw' }">
153
- <SimpleAppForm :document="obj" #default="o">
154
- <div class="simpleapp-tool-bar col-span-4 text-left gap-4" >
155
- <Button class=" btn-default" :disabled="disabled" @click="newData" type="button" v-if="canPerform(resourcename,'create')">New</Button>
156
- <Button class=" btn-primary" :disabled="disabled" @click="createData" type="button" v-if="canPerform(resourcename,'update') && data.created==''">Create</Button>
157
- <Button class=" btn-primary" :disabled="disabled" @click="updateData" type="button" v-if="canPerform(resourcename,'update') && data.created!=''">Update</Button>
158
- <Button class=" btn-danger" :disabled="disabled" @click="deleteData($event)" type="button" v-if="canPerform(resourcename,'delete') && data.created!=''">Delete</Button>
159
- <ProgressSpinner v-if="disabled==true" style="width: 2rem; height: 2rem" ></ProgressSpinner>
160
- <ConfirmPopup></ConfirmPopup>
161
-
162
- </div>
163
- <slot :data="o.data" :getField="o.getField" name="default"></slot>
164
- </SimpleAppForm>
165
- </Dialog>
166
- </template>
167
-
168
- <style scoped>
169
- .crudsimple-dialog{
170
- z-index: 100;
171
- }
172
- </style>