@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.
- package/dist/generate.js +5 -1
- package/dist/generate.js.map +1 -1
- package/package.json +1 -1
- package/src/generate.ts +5 -1
- package/templates/basic/nest/apischema.ts.eta +2 -3
- package/templates/basic/nest/controller.ts.eta +3 -4
- package/templates/basic/nest/default.ts.eta +6 -0
- package/templates/basic/nest/jsonschema.ts.eta +3 -4
- package/templates/basic/nest/model.ts.eta +3 -5
- package/templates/basic/nest/processor.ts.eta +3 -4
- package/templates/basic/nest/service.ts.eta +8 -1
- package/templates/basic/nest/type.ts.eta +3 -4
- package/templates/basic/nuxt/default.ts.eta +6 -0
- package/templates/basic/nuxt/pages.form.vue.eta +2 -1
- package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +3 -4
- package/templates/nest/.env._eta +2 -1
- package/templates/nest/.gitignore.eta +5 -0
- package/templates/nest/src/simpleapp/.gitignore.eta +5 -0
- package/templates/nest/src/simpleapp/apischemas/index.ts._eta +6 -1
- package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +7 -0
- package/templates/nest/src/simpleapp/generate/apischemas/simpleapp.apischema.ts.eta +1 -1
- package/templates/nest/src/simpleapp/generate/workflow/formschema/index.ts.eta +6 -0
- package/templates/nest/src/simpleapp/generate/workflow/workflow.apischema.ts.eta +6 -0
- package/templates/nest/src/simpleapp/generate/workflow/workflow.config.ts.eta +6 -0
- package/templates/nest/src/simpleapp/generate/workflow/workflow.controller.ts.eta +6 -0
- package/templates/nest/src/simpleapp/generate/workflow/workflow.delegate.ts.eta +6 -0
- package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +2 -4
- package/templates/nest/src/simpleapp/generate/workflow/workflow.type.ts.eta +4 -5
- package/templates/nest/src/simpleapp/generate/workflow/workflow.userservice.ts.eta +6 -0
- package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +1 -1
- package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +1 -1
- package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/branch.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/docno.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/org.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/perm.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/user.service.ts.etax +1 -1
- package/templates/nest/src/simpleapp/types/index.ts._eta +6 -1
- package/templates/nest/src/simpleapp/workflows/listeners/simpleapp.listener.ts._eta +4 -5
- package/templates/nest/test/app.e2e-spec.ts.eta +6 -0
- package/templates/nest/test/setting.ts.eta +6 -0
- package/templates/nuxt/.env._eta +2 -1
- package/templates/nuxt/.gitignore.eta +5 -0
- package/templates/nuxt/{app.vue.eta → app.vue._eta} +14 -14
- package/templates/nuxt/assets/css/calendar.css._eta +6 -1
- package/templates/nuxt/assets/css/listview.css._eta +17 -0
- package/templates/nuxt/assets/css/style.css._eta +6 -4
- package/templates/nuxt/assets/css/tailwind.css._eta +6 -0
- package/templates/nuxt/assets/primevue/passthrough.ts._eta +13 -8
- package/templates/nuxt/components/button/ButtonDanger.vue._eta +16 -4
- package/templates/nuxt/components/button/ButtonDefault.vue._eta +17 -4
- package/templates/nuxt/components/button/ButtonMultiple.vue._eta +8 -2
- package/templates/nuxt/components/button/ButtonPrimary.vue._eta +17 -5
- package/templates/nuxt/components/button/ButtonText.vue._eta +21 -0
- package/templates/nuxt/components/button/ButtonWarning.vue._eta +17 -5
- package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +7 -3
- package/templates/nuxt/components/calendar/CalendarSmall.vue.eta +6 -0
- package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +3 -3
- package/templates/nuxt/components/event/EventDecision.vue._eta +3 -3
- package/templates/nuxt/components/event/EventDocumentViewer.vue._eta +3 -3
- package/templates/nuxt/components/event/EventNotification.vue._eta +3 -3
- package/templates/nuxt/components/form/FormBranch.vue.eta +4 -3
- package/templates/nuxt/components/header/HeaderBar.vue._eta +7 -1
- package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +6 -0
- package/templates/nuxt/components/header/HeaderSelectBranch.vue.eta +6 -0
- package/templates/nuxt/components/header/button/HeaderButtonHome.vue.eta +6 -1
- package/templates/nuxt/components/header/button/HeaderButtonLogout.vue.eta +9 -1
- package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +7 -0
- package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +6 -0
- package/templates/nuxt/components/header/button/task/HeaderButtonTaskItem.vue.eta +7 -0
- package/templates/nuxt/components/header/button/task/HeaderButtonTaskList.vue.eta +6 -0
- package/templates/nuxt/components/list/ListDocument.vue.eta +6 -0
- package/templates/nuxt/components/list/ListDocumentTable.vue.eta +6 -0
- package/templates/nuxt/components/list/ListView.vue.eta +60 -47
- package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +9 -3
- package/templates/nuxt/components/overlay/OverlayPanelWithToolBar.vue.eta +44 -0
- package/templates/nuxt/components/overlay/OverlaySideBarCrud.vue.eta +10 -1
- package/templates/nuxt/components/overlay/OverlayViewer.vue.eta +7 -1
- package/templates/nuxt/components/page/PageDocList.vue.eta +23 -14
- package/templates/nuxt/components/renderer/index.ts._eta +3 -3
- package/templates/nuxt/components/session/SessionBlock.vue.eta +6 -0
- package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +7 -1
- package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +6 -0
- package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +6 -0
- package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +7 -2
- package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +21 -17
- package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +6 -0
- package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +6 -1
- package/templates/nuxt/components/simpleApp/SimpleAppJsonSchemaForm.vue.eta +6 -0
- package/templates/nuxt/components/table/TableDocuments.vue.eta +6 -0
- package/templates/nuxt/components/text/TextDanger.vue._eta +8 -0
- package/templates/nuxt/components/text/TextSubtitle.vue._eta +8 -0
- package/templates/nuxt/components/text/TextTitle.vue._eta +8 -0
- package/templates/nuxt/components/user/UserButtonCreateTenant.vue.eta +6 -0
- package/templates/nuxt/components/user/UserButtonPermissionInfo.vue.eta +6 -0
- package/templates/nuxt/components/user/UserInvitation.vue.eta +22 -16
- package/templates/nuxt/components/user/UserProfileListItem.vue.eta +6 -1
- package/templates/nuxt/components/user/UserTenantPicker.vue.eta +6 -1
- package/templates/nuxt/components/workflow/forms/dynamicfield.vue._eta +7 -0
- package/templates/nuxt/components/workflow/forms/index.ts._eta +7 -0
- package/templates/nuxt/components/workflow/forms/simpleapprove.vue._eta +6 -0
- package/templates/nuxt/composables/date.generate.ts.eta +6 -3
- package/templates/nuxt/composables/docformat.generate.ts.eta +6 -0
- package/templates/nuxt/composables/getDocument.generate.ts.eta +6 -0
- package/templates/nuxt/composables/getTenant.generate.ts.eta +6 -0
- package/templates/nuxt/composables/getUserStore.generate.ts.eta +6 -0
- package/templates/nuxt/composables/goTo.generate.ts.eta +6 -0
- package/templates/nuxt/composables/logout.generate.ts.eta +6 -0
- package/templates/nuxt/composables/notifications.generate.ts.eta +6 -0
- package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +6 -0
- package/templates/nuxt/composables/roles.generate.ts.eta +6 -0
- package/templates/nuxt/composables/screensize.generate.ts.eta +6 -0
- package/templates/nuxt/composables/stringHelper.generate.ts.eta +6 -0
- package/templates/nuxt/composables/themes.generate.ts.eta +6 -0
- package/templates/nuxt/composables/workflow.generate.ts.eta +6 -0
- package/templates/nuxt/error.vue._eta +6 -1
- package/templates/nuxt/i18n.config.ts.eta +6 -0
- package/templates/nuxt/lang/cn.ts._eta +6 -0
- package/templates/nuxt/lang/en.ts.eta +1 -0
- package/templates/nuxt/layouts/default.vue._eta +6 -0
- package/templates/nuxt/layouts/loginlayout.vue._eta +9 -1
- package/templates/nuxt/layouts/mobile.vue._eta +6 -0
- package/templates/nuxt/middleware/30.acl.global.ts.eta +1 -1
- package/templates/nuxt/nuxt.config.ts._eta +4 -5
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/[id].vue.eta +4 -5
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +7 -0
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +6 -1
- package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +6 -1
- package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +4 -6
- package/templates/nuxt/pages/[xorg]/index.vue._eta +4 -5
- package/templates/nuxt/pages/[xorg]/organization/viewer.vue.eta +8 -0
- package/templates/nuxt/pages/[xorg]/organization.vue.eta +6 -1
- package/templates/nuxt/pages/[xorg]/profile.vue.eta +6 -0
- package/templates/nuxt/pages/[xorg]/reports/index.vue._eta +18 -0
- package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +4 -5
- package/templates/nuxt/pages/[xorg]/user/form.vue.eta +6 -1
- package/templates/nuxt/pages/[xorg]/user/index.vue.eta +4 -5
- package/templates/nuxt/pages/[xorg]/user/new.vue.eta +4 -5
- package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +4 -5
- package/templates/nuxt/pages/[xorg]/user.vue.eta +4 -4
- package/templates/nuxt/pages/index.vue._eta +4 -4
- package/templates/nuxt/pages/login.vue._eta +4 -4
- package/templates/nuxt/pages/profile.vue.eta +8 -1
- package/templates/nuxt/pages/relogin.vue.eta +6 -0
- package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +1 -1
- package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +1 -1
- package/templates/nuxt/server/api/[xorg]/[...].ts.eta +1 -1
- package/templates/nuxt/server/api/auth/[...].ts.eta +1 -1
- package/templates/nuxt/server/api/auth/logout.ts.eta +1 -1
- package/templates/nuxt/server/api/profile/[...].ts.eta +1 -2
- package/templates/nuxt/server/api/profile/index.ts.eta +1 -1
- package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +2 -4
- package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +1 -1
- package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +1 -1
- package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +1 -1
- package/templates/nuxt/simpleapp/generate/defaults/index.ts.eta +7 -0
- package/templates/nuxt/simpleapp/generate/types/index.ts.eta +7 -0
- package/templates/nuxt/simpleapp/workflows/forms/index.ts._eta +6 -0
- package/templates/nuxt/simpleapp/workflows/forms/simpleapprove.jsonschema.ts._eta +6 -0
- package/templates/nuxt/tailwind.config.ts._eta +6 -0
- package/templates/nuxt/types/calendar.ts.eta +2 -3
- package/templates/nuxt/types/documentlist.ts.eta +3 -3
- package/templates/nuxt/types/events.ts.eta +2 -2
- package/templates/nuxt/types/index.ts._eta +4 -5
- package/templates/nuxt/types/listview.ts.eta +2 -2
- package/templates/nuxt/types/notifications.ts.eta +2 -2
- package/templates/nuxt/types/others.ts.eta +2 -2
- package/templates/nuxt/types/schema.ts.eta +2 -2
- package/templates/nuxt/types/simpleappinput.ts.eta +2 -2
- package/templates/nuxt/types/user.ts.eta +2 -2
- package/templates/nuxt/types/workflow.ts.eta +2 -2
- package/templates/project/lang/default._json +1 -1
- package/templates/project/sharelibs/hello.ts._eta +6 -0
- package/templates/project/sharelibs/index.ts.eta +5 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocomplete.vue +0 -135
- package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocompletemulti.vue +0 -73
- package/templates/nuxt/components/simpleApp/pending/SimpleAppCalendar.vue +0 -55
- package/templates/nuxt/components/simpleApp/pending/SimpleAppCheckbox.vue +0 -29
- package/templates/nuxt/components/simpleApp/pending/SimpleAppChip.vue +0 -28
- package/templates/nuxt/components/simpleApp/pending/SimpleAppColor.vue +0 -41
- package/templates/nuxt/components/simpleApp/pending/SimpleAppDocumentNo.vue +0 -90
- package/templates/nuxt/components/simpleApp/pending/SimpleAppDynamicInput.vue +0 -29
- package/templates/nuxt/components/simpleApp/pending/SimpleAppEditor.vue +0 -31
- package/templates/nuxt/components/simpleApp/pending/SimpleAppInputTable.vue +0 -83
- package/templates/nuxt/components/simpleApp/pending/SimpleAppList.vue +0 -38
- package/templates/nuxt/components/simpleApp/pending/SimpleAppListmulti.vue +0 -41
- package/templates/nuxt/components/simpleApp/pending/SimpleAppNumber.vue +0 -43
- package/templates/nuxt/components/simpleApp/pending/SimpleAppPassword.vue +0 -41
- package/templates/nuxt/components/simpleApp/pending/SimpleAppRadio.vue +0 -42
- package/templates/nuxt/components/simpleApp/pending/SimpleAppRating.vue +0 -41
- package/templates/nuxt/components/simpleApp/pending/SimpleAppSelect.vue +0 -48
- package/templates/nuxt/components/simpleApp/pending/SimpleAppSelectmulti.vue +0 -39
- package/templates/nuxt/components/simpleApp/pending/SimpleAppSlider.vue +0 -42
- package/templates/nuxt/components/simpleApp/pending/SimpleAppSwitch.vue +0 -30
- package/templates/nuxt/components/simpleApp/pending/SimpleAppText.vue +0 -59
- package/templates/nuxt/components/simpleApp/pending/SimpleAppTextarea.vue +0 -41
- package/templates/nuxt/components/simpleApp/pending/SimpleAppValue.vue +0 -86
- package/templates/nuxt/components/simpleApp/pending/helper.ts-backup +0 -90
- package/templates/nuxt/components/simpleApp/pending/type.ts-backup +0 -32
- package/templates/nuxt/components/suspended/CrudNestedDoc.vue.eta +0 -172
- package/templates/nuxt/components/suspended/CrudSimple.vue.eta +0 -181
- package/templates/nuxt/components/suspended/Menus.vue.eta +0 -58
- package/templates/nuxt/components/suspended/Spinner.vue.eta +0 -9
- package/templates/nuxt/lang/df.ts.etaxxxx +0 -16
- 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>
|