@things-factory/meta-ui 7.0.0-alpha.24 → 7.0.0-alpha.26

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 (174) hide show
  1. package/client/actions/main.js +114 -4
  2. package/client/component/filter/filter-form-meta-code-select.js +88 -10
  3. package/client/component/filter/filter-form-meta-object-select.js +88 -10
  4. package/client/component/filter/filter-grist-meta-code-select.js +89 -10
  5. package/client/component/filter/filter-grist-meta-object-select.js +89 -10
  6. package/client/component/grist/editor/grist-editor-code-input.js +93 -5
  7. package/client/component/grist/editor/grist-editor-meta-code-selector.js +153 -5
  8. package/client/component/grist/editor/grist-editor-meta-object-selector.js +117 -5
  9. package/client/component/grist/renderer/grist-renderer-code-input.js +35 -1
  10. package/client/component/grist/renderer/grist-renderer-meta-code-selector.js +43 -1
  11. package/client/component/grist/renderer/grist-renderer-meta-object-selector.js +34 -1
  12. package/client/component/popup/code-input-editor-popup.js +88 -6
  13. package/client/component/popup/file-upload-popup.js +94 -11
  14. package/client/component/popup/meta-object-selector-popup.js +281 -7
  15. package/client/component/popup/record-based-code-editor-popup.js +114 -7
  16. package/client/mixin/meta-base-mixin.js +318 -1
  17. package/client/mixin/meta-basic-grist-mixin.js +283 -3
  18. package/client/mixin/meta-button-mixin.js +116 -1
  19. package/client/mixin/meta-form-mixin.js +432 -1
  20. package/client/mixin/meta-grist-tab-mixin.js +336 -1
  21. package/client/mixin/meta-main-tab-mixin.js +270 -1
  22. package/client/mixin/meta-master-detail-mixin.js +396 -1
  23. package/client/mixin/meta-service-mixin.js +306 -1
  24. package/client/mixin/meta-tab-detail-mixin.js +286 -1
  25. package/client/mixin/meta-tab-mixin.js +191 -1
  26. package/client/pages/activity/meta-activity-define-page.js +304 -10
  27. package/client/pages/activity/meta-activity-list-page.js +234 -3
  28. package/client/pages/activity/meta-activity-viewer-element.js +34 -2
  29. package/client/pages/activity/meta-activity-writer-element.js +47 -2
  30. package/client/pages/activity/meta-activiy-mixin.js +63 -3
  31. package/client/pages/button-role/button-role-detail.js +50 -1
  32. package/client/pages/button-role/button-role-page.js +24 -1
  33. package/client/pages/doc-number/doc-number-page.js +23 -1
  34. package/client/pages/doc-number/next-doc-number-popup.js +24 -1
  35. package/client/pages/entity/config-entity.js +698 -24
  36. package/client/pages/entity/main-menu-selector.js +176 -5
  37. package/client/pages/history/history-copy-list-popup.js +124 -4
  38. package/client/pages/history/history-json-list-popup.js +137 -4
  39. package/client/pages/loading-page.js +31 -5
  40. package/client/pages/menu/dynamic-menu-setting-let.js +72 -6
  41. package/client/pages/menu/dynamic-menu-template.js +93 -36
  42. package/client/pages/menu/dynamic-menu.js +587 -12
  43. package/client/pages/menu/export-menu-popup.js +416 -5
  44. package/client/pages/meta-form-element.js +9 -1
  45. package/client/pages/meta-grist-element.js +12 -1
  46. package/client/pages/meta-grist-page.js +16 -1
  47. package/client/pages/meta-grist-tab-element.js +16 -1
  48. package/client/pages/meta-grist-tab-page.js +16 -1
  49. package/client/pages/meta-main-tab-element.js +12 -1
  50. package/client/pages/meta-main-tab-page.js +16 -1
  51. package/client/pages/meta-master-detail-element.js +12 -1
  52. package/client/pages/meta-master-detail-page.js +16 -1
  53. package/client/pages/meta-tab-detail-element.js +12 -1
  54. package/client/pages/meta-tab-detail-page.js +16 -1
  55. package/client/pages/meta-tab-element.js +15 -1
  56. package/client/pages/personalize/personal-column-selector.js +204 -7
  57. package/client/pages/printer-device/printer-device-page.js +23 -1
  58. package/client/pages/template/doc-template-page.js +23 -1
  59. package/client/pages/template/template-file-page.js +23 -1
  60. package/client/pages/terms/config-terminology.js +200 -3
  61. package/client/pages/work-code/work-code-detail-popup.js +16 -1
  62. package/client/pages/work-code/work-code-page.js +22 -1
  63. package/client/reducers/main.js +79 -1
  64. package/client/route.js +8 -18
  65. package/client/utils/grist-default-value.js +36 -1
  66. package/client/utils/meta-api.js +794 -1
  67. package/client/utils/meta-crypto.js +52 -1
  68. package/client/utils/meta-ui-util.js +3250 -671
  69. package/client/utils/service-util.js +1178 -37
  70. package/client/utils/terms-util.js +181 -2
  71. package/client/utils/ui-util.js +337 -1
  72. package/client/utils/value-util.js +232 -1
  73. package/client/viewparts/dynamic-menu-landscape-styles.js +4 -2
  74. package/client/viewparts/dynamic-menu-landscape.js +93 -12
  75. package/client/viewparts/dynamic-menu-part.js +103 -5
  76. package/client/viewparts/dynamic-menu-portrait-styles.js +4 -2
  77. package/client/viewparts/dynamic-menu-portrait.js +86 -10
  78. package/client/viewparts/dynamic-top-menu-bar.js +89 -8
  79. package/package.json +19 -15
  80. package/server/activity/CommonActivity.ts +65 -0
  81. package/server/constants/error-code.ts +2 -0
  82. package/server/controllers/index.ts +0 -0
  83. package/server/index.ts +3 -0
  84. package/server/routes.ts +64 -0
  85. package/server/service/button-role/button-role-mutation.ts +121 -0
  86. package/server/service/button-role/button-role-query.ts +48 -0
  87. package/server/service/button-role/button-role-type.ts +39 -0
  88. package/server/service/button-role/button-role.ts +62 -0
  89. package/server/service/button-role/index.ts +7 -0
  90. package/server/service/dynamic-menu/dynamic-menu-query.ts +208 -0
  91. package/server/service/dynamic-menu/dynamic-menu-type.ts +79 -0
  92. package/server/service/dynamic-menu/index.ts +3 -0
  93. package/server/service/entity-event-subscriber/entity-event-subscriber.ts +82 -0
  94. package/server/service/entity-event-subscriber/index.ts +3 -0
  95. package/server/service/grid-personalize/grid-personalize-mutation.ts +113 -0
  96. package/server/service/grid-personalize/grid-personalize-query.ts +61 -0
  97. package/server/service/grid-personalize/grid-personalize-type.ts +45 -0
  98. package/server/service/grid-personalize/grid-personalize.ts +73 -0
  99. package/server/service/grid-personalize/index.ts +7 -0
  100. package/server/service/index.ts +45 -0
  101. package/server/service/menu-button-auth/index.ts +7 -0
  102. package/server/service/menu-button-auth/menu-button-auth-mutation.ts +133 -0
  103. package/server/service/menu-button-auth/menu-button-auth-query.ts +133 -0
  104. package/server/service/menu-button-auth/menu-button-auth-type.ts +63 -0
  105. package/server/service/menu-button-auth/menu-button-auth.ts +87 -0
  106. package/server/service/meta-activity/index.ts +5 -0
  107. package/server/service/meta-activity/meta-activity-mutation.ts +191 -0
  108. package/server/service/meta-activity/meta-activity-query.ts +40 -0
  109. package/server/service/meta-activity/meta-activity-type.ts +56 -0
  110. package/server/service/set-translations/index.ts +3 -0
  111. package/server/service/set-translations/set-translation-resolver.ts +63 -0
  112. package/server/service/work-code/index.ts +6 -0
  113. package/server/service/work-code/work-code-mutation.ts +147 -0
  114. package/server/service/work-code/work-code-query.ts +67 -0
  115. package/server/service/work-code/work-code-type.ts +60 -0
  116. package/server/service/work-code/work-code.ts +84 -0
  117. package/server/service/work-code-detail/index.ts +6 -0
  118. package/server/service/work-code-detail/work-code-detail-mutation.ts +149 -0
  119. package/server/service/work-code-detail/work-code-detail-query.ts +56 -0
  120. package/server/service/work-code-detail/work-code-detail-type.ts +50 -0
  121. package/server/service/work-code-detail/work-code-detail.ts +78 -0
  122. package/server/tsconfig.json +9 -0
  123. package/CHANGELOG.md +0 -8
  124. package/client/component/selector/meta-object-selector-popup.js +0 -40
  125. package/client/pages/button-role/config-button-roles.js +0 -69
  126. package/server/activity/CommonActivity.js +0 -12
  127. package/server/constants/error-code.js +0 -1
  128. package/server/controllers/index.js +0 -1
  129. package/server/errors/index.js +0 -5
  130. package/server/errors/license-error.js +0 -1
  131. package/server/index.js +0 -8
  132. package/server/middlewares/index.js +0 -19
  133. package/server/migrations/index.js +0 -12
  134. package/server/routes.js +0 -1
  135. package/server/service/button-role/button-role-mutation.js +0 -1
  136. package/server/service/button-role/button-role-query.js +0 -1
  137. package/server/service/button-role/button-role-type.js +0 -1
  138. package/server/service/button-role/button-role.js +0 -1
  139. package/server/service/button-role/index.js +0 -9
  140. package/server/service/dynamic-menu/dynamic-menu-query.js +0 -1
  141. package/server/service/dynamic-menu/dynamic-menu-type.js +0 -1
  142. package/server/service/dynamic-menu/index.js +0 -6
  143. package/server/service/entity-event-subscriber/entity-event-subscriber.js +0 -1
  144. package/server/service/entity-event-subscriber/index.js +0 -6
  145. package/server/service/grid-personalize/grid-personalize-mutation.js +0 -1
  146. package/server/service/grid-personalize/grid-personalize-query.js +0 -1
  147. package/server/service/grid-personalize/grid-personalize-type.js +0 -1
  148. package/server/service/grid-personalize/grid-personalize.js +0 -1
  149. package/server/service/grid-personalize/index.js +0 -9
  150. package/server/service/index.js +0 -48
  151. package/server/service/menu-button-auth/index.js +0 -9
  152. package/server/service/menu-button-auth/menu-button-auth-mutation.js +0 -1
  153. package/server/service/menu-button-auth/menu-button-auth-query.js +0 -1
  154. package/server/service/menu-button-auth/menu-button-auth-type.js +0 -1
  155. package/server/service/menu-button-auth/menu-button-auth.js +0 -1
  156. package/server/service/meta-activity/index.js +0 -7
  157. package/server/service/meta-activity/meta-activity-mutation.js +0 -1
  158. package/server/service/meta-activity/meta-activity-query.js +0 -1
  159. package/server/service/meta-activity/meta-activity-type.js +0 -1
  160. package/server/service/meta-secret/index.js +0 -6
  161. package/server/service/meta-secret/meta-resolver.js +0 -1
  162. package/server/service/set-translations/index.js +0 -6
  163. package/server/service/set-translations/set-translation-resolver.js +0 -1
  164. package/server/service/work-code/index.js +0 -9
  165. package/server/service/work-code/work-code-mutation.js +0 -1
  166. package/server/service/work-code/work-code-query.js +0 -1
  167. package/server/service/work-code/work-code-type.js +0 -1
  168. package/server/service/work-code/work-code.js +0 -1
  169. package/server/service/work-code-detail/index.js +0 -9
  170. package/server/service/work-code-detail/work-code-detail-mutation.js +0 -1
  171. package/server/service/work-code-detail/work-code-detail-query.js +0 -1
  172. package/server/service/work-code-detail/work-code-detail-type.js +0 -1
  173. package/server/service/work-code-detail/work-code-detail.js +0 -1
  174. package/translations/ja.json +0 -75
@@ -1,7 +1,88 @@
1
- import"../viewparts/dynamic-menu-part";import"@material/mwc-icon";import gql from"graphql-tag";import{html}from"lit";import{client}from"@operato/graphql";import{appendViewpart,toggleOverlay,TOOL_POSITION,VIEWPART_POSITION}from"@operato/layout";import{store}from"@operato/shell";import{isMobileDevice}from"@operato/utils";import{APPEND_APP_TOOL,REMOVE_APP_TOOL}from"@things-factory/apptool-base";import{clientSettingStore}from"@things-factory/shell";export const UPDATE_META_UI="UPDATE_META_UI";export const UPDATE_META_MENU_TEMPLATE="UPDATE_META_MENU_TEMPLATE";var HAMBURGER;export async function setupMenuPart(e){var{hovering:t=!!isMobileDevice(),slotTemplate:a,portraitSlotTemplate:i,landscapeSlotTemplate:o,position:r=VIEWPART_POSITION.NAVBAR}=e||{};const{hovering:n}=(await clientSettingStore.get("dynamic-menu"))?.value||{};void 0!==n&&(t=n);const p=r==VIEWPART_POSITION.HEADERBAR?"landscape":"portrait",l=("landscape"==p?o:i)||a||html``;appendViewpart({name:"dynamic-menu-part",viewpart:{show:!t,resizable:!0,hovering:!!isMobileDevice()||t,template:html`<dynamic-menu-part .orientation=${p}>${l}</dynamic-menu-part>`},position:r}),(t||isMobileDevice())&&"portrait"==p?HAMBURGER||(HAMBURGER={name:"hamburger",template:html`
2
- <mwc-icon @click=${e=>toggleOverlay("dynamic-menu-part",{backdrop:!0})}
1
+ import '../viewparts/dynamic-menu-part'
2
+ import '@material/mwc-icon'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { html } from 'lit'
6
+
7
+ import { client } from '@operato/graphql'
8
+ import { appendViewpart, toggleOverlay, TOOL_POSITION, VIEWPART_POSITION } from '@operato/layout'
9
+ import { store } from '@operato/shell'
10
+ import { isMobileDevice } from '@operato/utils'
11
+ import { APPEND_APP_TOOL, REMOVE_APP_TOOL } from '@things-factory/apptool-base'
12
+ import { clientSettingStore } from '@things-factory/shell'
13
+
14
+ export const UPDATE_META_UI = 'UPDATE_META_UI'
15
+ export const UPDATE_META_MENU_TEMPLATE = 'UPDATE_META_MENU_TEMPLATE'
16
+
17
+ var HAMBURGER
18
+
19
+ export async function setupMenuPart(options) {
20
+ var {
21
+ hovering = isMobileDevice() ? true : false,
22
+ slotTemplate,
23
+ portraitSlotTemplate,
24
+ landscapeSlotTemplate,
25
+ position = VIEWPART_POSITION.NAVBAR
26
+ } = options || {}
27
+
28
+ const { hovering: hoveringSetting } = (await clientSettingStore.get('dynamic-menu'))?.value || {}
29
+ if (hoveringSetting !== undefined) {
30
+ hovering = hoveringSetting
31
+ }
32
+
33
+ const orientation = position == VIEWPART_POSITION.HEADERBAR ? 'landscape' : 'portrait'
34
+ const orientatedSlotTemplate =
35
+ (orientation == 'landscape' ? landscapeSlotTemplate : portraitSlotTemplate) || slotTemplate || html``
36
+
37
+ appendViewpart({
38
+ name: 'dynamic-menu-part',
39
+ viewpart: {
40
+ show: !hovering,
41
+ resizable: true,
42
+ hovering: isMobileDevice() ? true : hovering,
43
+ template: html`<dynamic-menu-part .orientation=${orientation}>${orientatedSlotTemplate}</dynamic-menu-part>`
44
+ },
45
+ position
46
+ })
47
+
48
+ if ((hovering || isMobileDevice()) && orientation == 'portrait') {
49
+ if (!HAMBURGER) {
50
+ HAMBURGER = {
51
+ name: 'hamburger',
52
+ template: html`
53
+ <mwc-icon @click=${e=>
54
+ toggleOverlay('dynamic-menu-part', {
55
+ backdrop: true
56
+ })}
3
57
  >view_headline</mwc-icon>
4
- `,position:TOOL_POSITION.FRONT_END},store.dispatch({type:APPEND_APP_TOOL,tool:HAMBURGER})):HAMBURGER&&(store.dispatch({type:REMOVE_APP_TOOL,name:"hamburger"}),HAMBURGER=null)}export async function updateMenuTemplate(e){var t=document.querySelector('meta[name="application-name"]')?.content,a=(await client.query({query:gql`
58
+ `,
59
+ position: TOOL_POSITION.FRONT_END
60
+ }
61
+
62
+ store.dispatch({
63
+ /* incase of mobile : add hamburger tool */
64
+ type: APPEND_APP_TOOL,
65
+ tool: HAMBURGER
66
+ })
67
+ }
68
+ } else {
69
+ if (HAMBURGER) {
70
+ store.dispatch({
71
+ type: REMOVE_APP_TOOL,
72
+ name: 'hamburger'
73
+ })
74
+
75
+ HAMBURGER = null
76
+ }
77
+ }
78
+ }
79
+
80
+ export async function updateMenuTemplate(template) {
81
+ var applicationName = document.querySelector('meta[name="application-name"]')?.content
82
+
83
+ var liteMenus = (
84
+ await client.query({
85
+ query: gql`
5
86
  query ($filters: [Filter!], $sortings: [Sorting!]) {
6
87
  liteMenus: liteMenus(filters: $filters
7
88
  sortings: $sortings) {
@@ -20,4 +101,33 @@ import"../viewparts/dynamic-menu-part";import"@material/mwc-icon";import gql fro
20
101
  total
21
102
  }
22
103
  }
23
- `,variables:{filters:[{name:"active",operator:"eq",value:!0},{name:"appName",operator:"in",value:["",t]}],sortings:[{name:"rank",desc:!1}]}})).data.liteMenus.items;store.dispatch({type:UPDATE_META_MENU_TEMPLATE,addon:a.filter((e=>!e.appName||e.appName===t)),template:e})}
104
+ `,
105
+ variables: {
106
+ filters: [
107
+ {
108
+ name: 'active',
109
+ operator: 'eq',
110
+ value: true
111
+ },
112
+ {
113
+ name: 'appName',
114
+ operator: 'in',
115
+ value: ['', applicationName]
116
+ }
117
+ ],
118
+ sortings:[
119
+ {
120
+ name: 'rank',
121
+ desc: false
122
+ }
123
+ ]
124
+ }
125
+ })
126
+ ).data.liteMenus.items
127
+
128
+ store.dispatch({
129
+ type: UPDATE_META_MENU_TEMPLATE,
130
+ addon: liteMenus.filter(menu => !menu.appName || menu.appName === applicationName),
131
+ template
132
+ })
133
+ }
@@ -1,16 +1,94 @@
1
- import"../popup/meta-object-selector-popup";import{html}from"lit-html";import{openPopup}from"@operato/layout";import{TermsUtil}from"./../../utils/terms-util";function openMetaCodeSelector(e,t,o){var l=html`
1
+ import '../popup/meta-object-selector-popup'
2
+
3
+ import { html } from 'lit-html'
4
+ import { openPopup } from '@operato/layout'
5
+ import { TermsUtil } from './../../utils/terms-util'
6
+
7
+ function openMetaCodeSelector(filter, value, confirmCallback) {
8
+
9
+ var template = html`
2
10
  <meta-object-selector-popup
3
- .value=${t}
4
- .options=${e.options}
5
- .confirmCallback=${o}
11
+ .value=${value}
12
+ .options=${filter.options}
13
+ .confirmCallback=${confirmCallback}
6
14
  ></meta-object-selector-popup>
7
- `;openPopup(l,{backdrop:!0,size:"large",title:e.options.selectorName?TermsUtil.tMenu(e.options.selectorName):TermsUtil.tTitle("select_item")})}export const FilterFormMetaCodeSelect=(e,t,o)=>{const l=e.options,p=l.codes&&l.codes.length>0?l.codes:void 0,{operator:a="eq"}=e;let i=t||"",r=t||"";if(l.dispField&&t&&p){let e=p.filter((e=>e.value==t));e&&e.length>0&&(r=e[0].display)}return"eq"===a?html`
8
- <input name='${e.name}' .value=${i} type="text" hidden></input>
15
+ `
16
+
17
+ openPopup(template, {
18
+ backdrop: true,
19
+ size: 'large',
20
+ title: filter.options.selectorName ? TermsUtil.tMenu(filter.options.selectorName) : TermsUtil.tTitle('select_item')
21
+ })
22
+ }
23
+
24
+
25
+ export const FilterFormMetaCodeSelect = (filter, value, owner) =>{
26
+ const options = filter.options;
27
+ const codes = (options.codes && options.codes.length > 0) ? options.codes : undefined;
28
+ const { operator = 'eq' } = filter;
29
+ let hideText = value? value : '';
30
+ let text = value? value : '';
31
+
32
+ if(options.dispField && value && codes){
33
+ let dispCode = codes.filter(x=> x.value == value);
34
+
35
+ if(dispCode && dispCode.length > 0){
36
+ text = dispCode[0].display;
37
+ }
38
+ }
39
+
40
+ return operator === 'eq'
41
+ ? html`
42
+ <input name='${filter.name}' .value=${hideText} type="text" hidden></input>
9
43
  <input
10
44
  type="text"
11
45
  readonly
12
- name='${e.name}_disp'
13
- .value=${r}
14
- @click=${p=>{p.stopPropagation();const i=p.target;openMetaCodeSelector(e,t,(t=>{let p=t?t[l.codeField]:"",r=p;if(t&&l.dispField){let e=l.dispField.split(",");r=t[e[0]],e.length>1&&(r+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}i.value=r,("ox-grid-header"==o.tagName.toLowerCase()?o.renderRoot.querySelector(`[name="${e.name}"]`):o.renderRoot.querySelector(`form [name="${e.name}"]`)).value=p,i.dispatchEvent(new Event("change",{bubbles:!0})),i.dispatchEvent(new CustomEvent("filter-change",{bubbles:!0,composed:!0,detail:{name:e.name,operator:a,value:p}}))}))}}
46
+ name='${filter.name}_disp'
47
+ .value=${text}
48
+ @click=${(e) => {
49
+ e.stopPropagation();
50
+
51
+ const input = e.target;
52
+
53
+ const confirmCallback = (selected) => {
54
+ let code = selected ? selected[options.codeField] : '';
55
+ let disp = code;
56
+
57
+ if(selected && options.dispField){
58
+ let fields = options.dispField.split(",");
59
+ disp = selected[fields[0]];
60
+
61
+ if(fields.length > 1){
62
+ disp+= `(${fields.splice(1).map(field => { return selected[field]}).join(",")})`
63
+ }
64
+ }
65
+
66
+ input.value = disp;
67
+
68
+ let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header'
69
+ ? owner.renderRoot.querySelector(`[name="${filter.name}"]`)
70
+ : owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
71
+
72
+ codeInput.value = code;
73
+
74
+ input.dispatchEvent(new Event('change', { bubbles: true }))
75
+
76
+ input.dispatchEvent(
77
+ new CustomEvent('filter-change', {
78
+ bubbles: true,
79
+ composed: true,
80
+ detail: {
81
+ name: filter.name,
82
+ operator,
83
+ value: code
84
+ }
85
+ })
86
+ )
87
+ }
88
+
89
+ openMetaCodeSelector(filter, value, confirmCallback)
90
+ }}
15
91
  />
16
- `:html``};
92
+ `
93
+ : html``
94
+ }
@@ -1,16 +1,94 @@
1
- import"../popup/meta-object-selector-popup";import{html}from"lit-html";import{openPopup}from"@operato/layout";import{TermsUtil}from"./../../utils/terms-util";function openMetaObjectSelector(e,t,o){var l=html`
1
+ import '../popup/meta-object-selector-popup'
2
+
3
+ import { html } from 'lit-html'
4
+ import { openPopup } from '@operato/layout'
5
+ import { TermsUtil } from './../../utils/terms-util'
6
+
7
+ function openMetaObjectSelector(filter, value, confirmCallback) {
8
+
9
+ var template = html`
2
10
  <meta-object-selector-popup
3
- .value=${t}
4
- .options=${e.options}
5
- .confirmCallback=${o}
11
+ .value=${value}
12
+ .options=${filter.options}
13
+ .confirmCallback=${confirmCallback}
6
14
  ></meta-object-selector-popup>
7
- `;openPopup(l,{backdrop:!0,size:"large",title:e.options.selectorName?TermsUtil.tMenu(e.options.selectorName):TermsUtil.tTitle("select_item")})}export const FilterFormMetaObjectSelect=(e,t,o)=>{const l=e.options,{operator:p="eq"}=e;let a=t?t.id:"",n="";if(t){let e=l.nameField.split(",");n=t[e[0]],e.length>1&&(n+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}return"eq"===p?html`
8
- <input name='${e.name}' .value=${a} type="text" hidden></input>
15
+ `
16
+
17
+ openPopup(template, {
18
+ backdrop: true,
19
+ size: 'large',
20
+ title: filter.options.selectorName ? TermsUtil.tMenu(filter.options.selectorName) : TermsUtil.tTitle('select_item')
21
+ })
22
+ }
23
+
24
+
25
+ export const FilterFormMetaObjectSelect = (filter, value, owner) =>{
26
+ const options = filter.options;
27
+ const { operator = 'eq' } = filter;
28
+ let hideText = value ? value.id : '';
29
+ let text = '';
30
+
31
+ if(value){
32
+ let fields = options.nameField.split(",");
33
+ text = value[fields[0]];
34
+
35
+ if(fields.length > 1){
36
+ text+= `(${fields.splice(1).map(field => { return value[field]}).join(",")})`
37
+ }
38
+ }
39
+
40
+ return operator === 'eq'
41
+ ? html`
42
+ <input name='${filter.name}' .value=${hideText} type="text" hidden></input>
9
43
  <input
10
44
  type="text"
11
45
  readonly
12
- name='${e.name}_disp'
13
- .value=${n}
14
- @click=${a=>{a.stopPropagation();const n=a.target;openMetaObjectSelector(e,t,(t=>{let a=t?t.id:"",r="";if(t){let e=l.nameField.split(",");r=t[e[0]],e.length>1&&(r+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}n.value=r,("ox-grid-header"==o.tagName.toLowerCase()?o.renderRoot.querySelector(`[name="${e.name}"]`):o.renderRoot.querySelector(`form [name="${e.name}"]`)).value=a,n.dispatchEvent(new Event("change",{bubbles:!0})),n.dispatchEvent(new CustomEvent("filter-change",{bubbles:!0,composed:!0,detail:{name:e.name,operator:p,value:a}}))}))}}
46
+ name='${filter.name}_disp'
47
+ .value=${text}
48
+ @click=${(e) => {
49
+ e.stopPropagation();
50
+
51
+ const input = e.target;
52
+
53
+ const confirmCallback = (selected) => {
54
+ let code = selected ? selected.id : '';
55
+ let disp = '';
56
+
57
+ if(selected){
58
+ let fields = options.nameField.split(",");
59
+ disp = selected[fields[0]];
60
+
61
+ if(fields.length > 1){
62
+ disp+= `(${fields.splice(1).map(field => { return selected[field]}).join(",")})`
63
+ }
64
+ }
65
+
66
+ input.value = disp;
67
+
68
+ let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header'
69
+ ? owner.renderRoot.querySelector(`[name="${filter.name}"]`)
70
+ : owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
71
+
72
+ codeInput.value = code;
73
+
74
+ input.dispatchEvent(new Event('change', { bubbles: true }))
75
+
76
+ input.dispatchEvent(
77
+ new CustomEvent('filter-change', {
78
+ bubbles: true,
79
+ composed: true,
80
+ detail: {
81
+ name: filter.name,
82
+ operator,
83
+ value: code
84
+ }
85
+ })
86
+ )
87
+ }
88
+
89
+ openMetaObjectSelector(filter, value, confirmCallback)
90
+ }}
15
91
  />
16
- `:html``};
92
+ `
93
+ : html``
94
+ }
@@ -1,16 +1,95 @@
1
- import"../popup/meta-object-selector-popup";import{html}from"lit-html";import{openPopup}from"@operato/layout";import{TermsUtil}from"./../../utils/terms-util";function openMetaCodeSelector(e,t,o){var l=html`
1
+ import '../popup/meta-object-selector-popup'
2
+
3
+ import { html } from 'lit-html'
4
+
5
+ import { openPopup } from '@operato/layout'
6
+ import { TermsUtil } from './../../utils/terms-util'
7
+
8
+
9
+ function openMetaCodeSelector(column, value, confirmCallback) {
10
+
11
+ var template = html`
2
12
  <meta-object-selector-popup
3
- .value=${t}
4
- .options=${e.record.options}
5
- .confirmCallback=${o}
13
+ .value=${value}
14
+ .options=${column.record.options}
15
+ .confirmCallback=${confirmCallback}
6
16
  ></meta-object-selector-popup>
7
- `;openPopup(l,{backdrop:!0,size:"large",title:e.record.options.selectorName?TermsUtil.tMenu(e.record.options.selectorName):TermsUtil.tTitle("select_item")})}export const FilterGristMetaCodeSelect=(e,t,o)=>{const l=e.filter,r=e.record.options,p=r.codes&&r.codes.length>0?r.codes:void 0,{operator:i="eq"}=l;let a=t||"",n=t||"";if(r.dispField&&t&&p){let e=p.filter((e=>e.value==t));e&&e.length>0&&(n=e[0].display)}return"eq"===i?html`
8
- <input name='${e.name}' .value=${a} type="text" hidden></input>
17
+ `
18
+
19
+ openPopup(template, {
20
+ backdrop: true,
21
+ size: 'large',
22
+ title: column.record.options.selectorName ? TermsUtil.tMenu(column.record.options.selectorName) : TermsUtil.tTitle('select_item')
23
+ })
24
+ }
25
+
26
+ export const FilterGristMetaCodeSelect = (column, value, owner) => {
27
+ const filter = column.filter;
28
+ const options = column.record.options;
29
+ const codes = (options.codes && options.codes.length > 0) ? options.codes : undefined;
30
+ const { operator = 'eq' } = filter;
31
+ let hideText = value? value : '';
32
+ let text = value? value : '';
33
+
34
+ if(options.dispField && value && codes){
35
+ let dispCode = codes.filter(x=> x.value == value);
36
+
37
+ if(dispCode && dispCode.length > 0){
38
+ text = dispCode[0].display;
39
+ }
40
+ }
41
+
42
+ return operator === 'eq'
43
+ ? html`
44
+ <input name='${column.name}' .value=${hideText} type="text" hidden></input>
9
45
  <input
10
46
  type="text"
11
47
  readonly
12
- name='${e.name}_disp'
13
- .value=${n}
14
- @click=${p=>{p.stopPropagation();const a=p.target;openMetaCodeSelector(e,t,(t=>{let p=t?t[r.codeField]:"",n=p;if(t&&r.dispField){let e=r.dispField.split(",");n=t[e[0]],e.length>1&&(n+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}a.value=n,("ox-grid-header"==o.tagName.toLowerCase()?o.renderRoot.querySelector(`[name="${l.name}"]`):o.renderRoot.querySelector(`form [name="${l.name}"]`)).value=p,a.dispatchEvent(new Event("change",{bubbles:!0})),a.dispatchEvent(new CustomEvent("filter-change",{bubbles:!0,composed:!0,detail:{name:e.name,operator:i,value:p}}))}))}}
48
+ name='${column.name}_disp'
49
+ .value=${text}
50
+ @click=${(e) => {
51
+ e.stopPropagation();
52
+
53
+ const input = e.target;
54
+
55
+ const confirmCallback = (selected) => {
56
+ let code = selected ? selected[options.codeField] : '';
57
+ let disp = code;
58
+
59
+ if(selected && options.dispField){
60
+ let fields = options.dispField.split(",");
61
+ disp = selected[fields[0]];
62
+
63
+ if(fields.length > 1){
64
+ disp+= `(${fields.splice(1).map(field => { return selected[field]}).join(",")})`
65
+ }
66
+ }
67
+
68
+ input.value = disp;
69
+
70
+ let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header'
71
+ ? owner.renderRoot.querySelector(`[name="${filter.name}"]`)
72
+ : owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
73
+ codeInput.value = code;
74
+
75
+ input.dispatchEvent(new Event('change', { bubbles: true }))
76
+
77
+ input.dispatchEvent(
78
+ new CustomEvent('filter-change', {
79
+ bubbles: true,
80
+ composed: true,
81
+ detail: {
82
+ name: column.name,
83
+ operator,
84
+ value: code
85
+ }
86
+ })
87
+ )
88
+ }
89
+
90
+ openMetaCodeSelector(column, value, confirmCallback)
91
+ }}
15
92
  />
16
- `:html``};
93
+ `
94
+ : html``
95
+ }
@@ -1,16 +1,95 @@
1
- import"../popup/meta-object-selector-popup";import{html}from"lit-html";import{openPopup}from"@operato/layout";import{TermsUtil}from"./../../utils/terms-util";function openMetaObjectSelector(e,t,o){var r=html`
1
+ import '../popup/meta-object-selector-popup'
2
+
3
+ import { html } from 'lit-html'
4
+
5
+ import { openPopup } from '@operato/layout'
6
+ import { TermsUtil } from './../../utils/terms-util'
7
+
8
+
9
+ function openMetaObjectSelector(column, value, confirmCallback) {
10
+
11
+ var template = html`
2
12
  <meta-object-selector-popup
3
- .value=${t}
4
- .options=${e.record.options}
5
- .confirmCallback=${o}
13
+ .value=${value}
14
+ .options=${column.record.options}
15
+ .confirmCallback=${confirmCallback}
6
16
  ></meta-object-selector-popup>
7
- `;openPopup(r,{backdrop:!0,size:"large",title:e.record.options.selectorName?TermsUtil.tMenu(e.record.options.selectorName):TermsUtil.tTitle("select_item")})}export const FilterGristMetaObjectSelect=(e,t,o)=>{const r=e.filter,{operator:l="eq"}=r,p=e.record.options;let a=t?t.id:"",n="";if(t){let e=p.nameField.split(",");n=t[e[0]],e.length>1&&(n+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}return"eq"===l?html`
8
- <input name='${e.name}' .value=${a} type="text" hidden></input>
17
+ `
18
+
19
+ openPopup(template, {
20
+ backdrop: true,
21
+ size: 'large',
22
+ title: column.record.options.selectorName ? TermsUtil.tMenu(column.record.options.selectorName) : TermsUtil.tTitle('select_item')
23
+ })
24
+ }
25
+
26
+ export const FilterGristMetaObjectSelect = (column, value, owner) => {
27
+ const filter = column.filter;
28
+ const { operator = 'eq' } = filter;
29
+ const options = column.record.options;
30
+ let hideText = value? value.id : '';
31
+ let text = '';
32
+
33
+ if(value){
34
+ let fields = options.nameField.split(",");
35
+ text = value[fields[0]];
36
+
37
+ if(fields.length > 1){
38
+ text+= `(${fields.splice(1).map(field => { return value[field]}).join(",")})`
39
+ }
40
+ }
41
+
42
+ return operator === 'eq'
43
+ ? html`
44
+ <input name='${column.name}' .value=${hideText} type="text" hidden></input>
9
45
  <input
10
46
  type="text"
11
47
  readonly
12
- name='${e.name}_disp'
13
- .value=${n}
14
- @click=${a=>{a.stopPropagation();const n=a.target;openMetaObjectSelector(e,t,(t=>{let a=t?t.id:"",i="";if(t){let e=p.nameField.split(",");i=t[e[0]],e.length>1&&(i+=`(${e.splice(1).map((e=>t[e])).join(",")})`)}n.value=i,("ox-grid-header"==o.tagName.toLowerCase()?o.renderRoot.querySelector(`[name="${r.name}"]`):o.renderRoot.querySelector(`form [name="${r.name}"]`)).value=a,n.dispatchEvent(new Event("change",{bubbles:!0})),n.dispatchEvent(new CustomEvent("filter-change",{bubbles:!0,composed:!0,detail:{name:e.name,operator:l,value:a}}))}))}}
48
+ name='${column.name}_disp'
49
+ .value=${text}
50
+ @click=${(e) => {
51
+ e.stopPropagation();
52
+
53
+ const input = e.target;
54
+
55
+ const confirmCallback = (selected) => {
56
+ let code = selected ? selected.id : '';
57
+ let disp = '';
58
+
59
+ if(selected){
60
+ let fields = options.nameField.split(",");
61
+ disp = selected[fields[0]];
62
+
63
+ if(fields.length > 1){
64
+ disp+= `(${fields.splice(1).map(field => { return selected[field]}).join(",")})`
65
+ }
66
+ }
67
+
68
+ input.value = disp;
69
+
70
+ let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header'
71
+ ? owner.renderRoot.querySelector(`[name="${filter.name}"]`)
72
+ : owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
73
+ codeInput.value = code;
74
+
75
+ input.dispatchEvent(new Event('change', { bubbles: true }))
76
+
77
+ input.dispatchEvent(
78
+ new CustomEvent('filter-change', {
79
+ bubbles: true,
80
+ composed: true,
81
+ detail: {
82
+ name: column.name,
83
+ operator,
84
+ value: code
85
+ }
86
+ })
87
+ )
88
+ }
89
+
90
+ openMetaObjectSelector(column, value, confirmCallback)
91
+ }}
15
92
  />
16
- `:html``};
93
+ `
94
+ : html``
95
+ }
@@ -1,8 +1,96 @@
1
- import{html}from"lit";import{OxGristEditor}from"@operato/data-grist";import{openPopup}from"@operato/layout";import{TermsUtil}from"../../../utils/terms-util";import"../../popup/code-input-editor-popup";export class GristEditorCodeInput extends OxGristEditor{static get properties(){return{value:Object,column:Object,record:Object,rowIndex:Number,field:Object,popup:Object}}get editorTemplate(){let t;return this.value&&(t="object"==typeof this.value?JSON.stringify(this.value,0,2):this.value,t=t.length>20?`${t.substring(0,20)}...`:t),html`
2
- ${t?html` <span tabindex="0" style="flex:1;">${t}</span> `:html`<span tabindex="0" ></span>`}
3
- `}async firstUpdated(){super.firstUpdated()}_onclick(t){t.stopPropagation(),this.openEditor()}_onkeydown(t){"Enter"==t.key&&(t.stopPropagation(),this.openEditor())}openEditor(){this.popup&&delete this.popup;var t=html`
1
+ import { html } from 'lit'
2
+
3
+ import { OxGristEditor } from '@operato/data-grist'
4
+ import { openPopup } from '@operato/layout'
5
+ import { TermsUtil } from '../../../utils/terms-util';
6
+
7
+ import '../../popup/code-input-editor-popup'
8
+
9
+ export class GristEditorCodeInput extends OxGristEditor {
10
+ static get properties() {
11
+ return {
12
+ value: Object,
13
+ column: Object,
14
+ record: Object,
15
+ rowIndex: Number,
16
+ field: Object,
17
+ popup: Object
18
+ }
19
+ }
20
+
21
+ get editorTemplate() {
22
+ let text = undefined;
23
+
24
+ if(this.value){
25
+ if(typeof this.value === 'object'){
26
+ text = JSON.stringify(this.value, 0, 2);
27
+ } else {
28
+ text = this.value;
29
+ }
30
+
31
+ text = text.length > 20 ? `${text.substring(0,20)}...` : text;
32
+ }
33
+
34
+ return html`
35
+ ${!text
36
+ ? html`<span tabindex="0" ></span>`
37
+ : html` <span tabindex="0" style="flex:1;">${text}</span> `}
38
+ `
39
+ }
40
+
41
+ async firstUpdated() {
42
+ super.firstUpdated()
43
+ }
44
+
45
+ _onclick(e) {
46
+ e.stopPropagation()
47
+ this.openEditor()
48
+ }
49
+
50
+ _onkeydown(e) {
51
+ const key = e.key
52
+ if (key == 'Enter') {
53
+ e.stopPropagation()
54
+ this.openEditor()
55
+ }
56
+ }
57
+
58
+ openEditor() {
59
+ if (this.popup) {
60
+ delete this.popup
61
+ }
62
+
63
+ const confirmCallback = (chageValue) => {
64
+ this.dispatchEvent(
65
+ new CustomEvent('field-change', {
66
+ bubbles: true,
67
+ composed: true,
68
+ detail: {
69
+ before: this.value,
70
+ after: chageValue
71
+ ? (typeof this.value === 'object' ? JSON.parse(chageValue) : chageValue)
72
+ : null,
73
+ record: this.record,
74
+ column: this.column,
75
+ row: this.row
76
+ }
77
+ })
78
+ )
79
+ }
80
+
81
+ var template = html`
4
82
  <code-input-editor-popup
5
83
  .value=${this.value}
6
- .confirmCallback=${(t=>{this.dispatchEvent(new CustomEvent("field-change",{bubbles:!0,composed:!0,detail:{before:this.value,after:t?"object"==typeof this.value?JSON.parse(t):t:null,record:this.record,column:this.column,row:this.row}}))}).bind(this)}
84
+ .confirmCallback=${confirmCallback.bind(this)}
7
85
  ></code-input-editor-popup>
8
- `;this.popup=openPopup(t,{backdrop:!0,size:"large",title:TermsUtil.tTitle("code-editor")})}}customElements.define("grist-editor-code-input",GristEditorCodeInput);
86
+ `
87
+
88
+ this.popup = openPopup(template, {
89
+ backdrop: true,
90
+ size: 'large',
91
+ title: TermsUtil.tTitle('code-editor')
92
+ })
93
+ }
94
+ }
95
+
96
+ customElements.define('grist-editor-code-input', GristEditorCodeInput)