@things-factory/operato-tools 7.0.0-y.0 → 7.0.1-alpha.0

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 (63) hide show
  1. package/client/index.js +0 -1
  2. package/client/pages/generator/button-config-tab-mixin.js +336 -2
  3. package/client/pages/generator/column-config-tab-mixin.js +647 -2
  4. package/client/pages/generator/etc-config-tab-mixin.js +116 -2
  5. package/client/pages/generator/form-config-tab-mixin.js +164 -2
  6. package/client/pages/generator/graphql-config-tab-mixin.js +281 -15
  7. package/client/pages/generator/grid-config-tab-mixin.js +190 -28
  8. package/client/pages/generator/grid-emphasized-config-tab-mixin.js +295 -6
  9. package/client/pages/generator/menu-config-tab-mixin.js +94 -8
  10. package/client/pages/generator/meta-generator-page.js +512 -12
  11. package/client/pages/generator/search-config-tab-mixin.js +188 -2
  12. package/client/pages/generator/tab-config-tab-mixin.js +226 -2
  13. package/client/pages/main.js +30 -7
  14. package/client/route.js +5 -10
  15. package/config/config.development.js +1 -1
  16. package/config/config.production.js +1 -0
  17. package/{server/errors → dist-server}/index.js +1 -1
  18. package/dist-server/index.js.map +1 -0
  19. package/{server → dist-server}/service/index.js +0 -2
  20. package/dist-server/service/index.js.map +1 -0
  21. package/dist-server/service/tool-entity/create-menu.js +321 -0
  22. package/dist-server/service/tool-entity/create-menu.js.map +1 -0
  23. package/dist-server/service/tool-entity/create-service.js +1053 -0
  24. package/dist-server/service/tool-entity/create-service.js.map +1 -0
  25. package/dist-server/service/tool-entity/index.js.map +1 -0
  26. package/dist-server/tsconfig.tsbuildinfo +1 -0
  27. package/package.json +21 -14
  28. package/server/index.ts +1 -0
  29. package/server/service/index.ts +15 -0
  30. package/server/service/tool-entity/create-menu.ts +338 -0
  31. package/server/service/tool-entity/create-service.ts +1128 -0
  32. package/server/service/tool-entity/index.ts +4 -0
  33. package/server/tsconfig.json +9 -0
  34. package/things-factory.config.js +1 -3
  35. package/tsconfig.json +9 -0
  36. package/views/auth-page.html +1 -7
  37. package/views/public/home.html +1 -6
  38. package/client/actions/main.js +0 -1
  39. package/client/bootstrap.js +0 -8
  40. package/client/reducers/main.js +0 -1
  41. package/client/themes/grist-theme.css +0 -200
  42. package/client/themes/layout-theme.css +0 -92
  43. package/client/themes/report-theme.css +0 -47
  44. package/schema.graphql +0 -3646
  45. package/server/constants/error-code.js +0 -1
  46. package/server/controllers/index.js +0 -1
  47. package/server/errors/license-error.js +0 -1
  48. package/server/index.js +0 -8
  49. package/server/middlewares/index.js +0 -19
  50. package/server/migrations/index.js +0 -12
  51. package/server/routes.js +0 -1
  52. package/server/service/boxtype/boxtype-mutation.js +0 -1
  53. package/server/service/boxtype/boxtype-query.js +0 -1
  54. package/server/service/boxtype/boxtype-type.js +0 -1
  55. package/server/service/boxtype/boxtype.js +0 -1
  56. package/server/service/boxtype/index.js +0 -9
  57. package/server/service/tool-entity/create-menu.js +0 -1
  58. package/server/service/tool-entity/create-service.js +0 -1
  59. package/server/service/tool-secret/index.js +0 -6
  60. package/server/service/tool-secret/tool-permission.js +0 -1
  61. package/server/service/tool-secret/tool-resolver.js +0 -1
  62. package/translations/ja.json +0 -85
  63. /package/{server → dist-server}/service/tool-entity/index.js +0 -0
package/client/index.js CHANGED
@@ -1 +0,0 @@
1
- export * from './actions/main'
@@ -1,5 +1,339 @@
1
- import{html}from"lit-element";import{MetaApi}from"@things-factory/meta-ui/client/utils/meta-api";import{TermsUtil}from"@things-factory/meta-ui/client/utils/terms-util";import{getRenderer}from"@operato/data-grist";export const ButtonConfigTabMixin=e=>class extends e{setButtonConfigTabValues(e){e?.forEach(((e,t)=>{let i=t+1;if(e.rank=10*i,e.id=i,e.logic&&!e.logic.logic){let t=JSON.stringify(e.logic,null,2);e.logic={},e.logic.logic=t}e.style&&Array.isArray(e.style)&&(e.style=JSON.stringify(e.style,null,2))})),this.viewButtonData=e,this.buttonTabGrist?.fetch()}getButtonConfigTabValues(){let e={button:[],grid:{button:[]}},t=this.getElementValueById("button-tab-grid");return this.sortRecordByRank(t)?.forEach((t=>{var{name:i,label:a,style:l,type:r="basic",logic:n,auth:o}=t;if(!i)return;let s={name:i,type:r.replaceAll("grid-",""),label:a||i,auth:o};n&&("string"==typeof n&&(n=JSON.parse(n)),n.logic&&(s.logic=JSON.parse(n.logic))),r.startsWith("grid")?(l&&((l=l.trim()).startsWith("[")&&(l=JSON.parse(l)),s.icon=l),e.grid.button.push(s)):(l&&(s.style=l),e.button.push(s))})),e}renderButtonConfigTab(){return html`
1
+ import { html } from 'lit-element'
2
+
3
+ import { MetaApi } from '@things-factory/meta-ui/client/utils/meta-api'
4
+ import { TermsUtil } from '@things-factory/meta-ui/client/utils/terms-util'
5
+ import { getRenderer } from '@operato/data-grist'
6
+
7
+ export const ButtonConfigTabMixin = (baseElement) => class extends baseElement {
8
+
9
+ setButtonConfigTabValues(data) {
10
+ data?.forEach((column, index) => {
11
+ let rank = index + 1;
12
+ column.rank = rank * 10;
13
+ column.id = rank;
14
+
15
+ if (column.logic && !column.logic.logic) {
16
+ let logicString = JSON.stringify(column.logic, null, 2);
17
+ column.logic = {};
18
+ column.logic.logic = logicString;
19
+ }
20
+
21
+ if (column.style && Array.isArray(column.style)) {
22
+ column.style = JSON.stringify(column.style, null, 2);
23
+ }
24
+ })
25
+
26
+ this.viewButtonData = data;
27
+ this.buttonTabGrist?.fetch();
28
+ }
29
+
30
+ getButtonConfigTabValues() {
31
+ // 기본 return object
32
+ let retObject = {
33
+ button: [],
34
+ grid: {
35
+ button: []
36
+ }
37
+ };
38
+
39
+ // grid 에서 데이터 가져오기
40
+ let gridValue = this.getElementValueById('button-tab-grid');
41
+
42
+ // rank 로 정렬
43
+ this.sortRecordByRank(gridValue)?.forEach(x => {
44
+ var {
45
+ name = undefined,
46
+ label = undefined,
47
+ style = undefined,
48
+ type = 'basic',
49
+ logic = undefined,
50
+ auth = undefined
51
+ } = x;
52
+
53
+ if (!name) return;
54
+
55
+ // 그리드, 일반 버튼 동일
56
+ let button = {
57
+ name: name,
58
+ type: type.replaceAll('grid-', ''),
59
+ label: label ? label : name,
60
+ auth: auth
61
+ }
62
+
63
+ // logic 이 있으면 반영
64
+ if (logic) {
65
+ if (typeof logic === 'string') {
66
+ logic = JSON.parse(logic);
67
+ }
68
+
69
+ if (logic.logic) {
70
+ button.logic = JSON.parse(logic.logic);
71
+ }
72
+ }
73
+
74
+
75
+ // grid 버튼은 icon / 일반 버튼은 style
76
+ if (type.startsWith('grid')) {
77
+ if (style) {
78
+ style = style.trim();
79
+ if (style.startsWith('[')) {
80
+ style = JSON.parse(style);
81
+ }
82
+ button.icon = style;
83
+ }
84
+ retObject.grid.button.push(button);
85
+ } else {
86
+ if (style) button.style = style;
87
+ retObject.button.push(button);
88
+ }
89
+ })
90
+
91
+ return retObject;
92
+ }
93
+
94
+ renderButtonConfigTab() {
95
+ return html`
2
96
  <ox-grist auto-fetch id="button-tab-grid" .config=${this.buttonTabGridConfig} .mode='GRID'
3
97
  .fetchHandler=${this.fetchButtonConfigTabHandler.bind(this)}>
4
98
  </ox-grist>
5
- `}get buttonTabGrist(){return this.shadowRoot.querySelector("#button-tab-grid")}async fetchButtonConfigTabHandler(){return{total:0,records:this.viewButtonData||[]}}setButtonConfigTabConfig(){this.buttonTabGridConfig={rows:MetaApi.getGristSelectableConfig(!0),pagination:{infinite:!0},sorters:[{name:"rank",desc:!1}],appendable:!0,columns:[...MetaApi.getGristGuttersConfig(!1,!1),{type:"gutter",gutterName:"button",icon:"delete",handlers:{click:(e,t,i,a,l)=>{a.id&&this.deleteRow(this.buttonTabGrist,a)}}},{type:"string",name:"id",hidden:!0},{type:"integer",name:"rank",header:TermsUtil.tLabel("rank"),sortable:!1,width:55,record:{align:"right",editable:!0,mandatory:!0}},{type:"string",name:"name",header:TermsUtil.tLabel("name"),sortable:!1,width:150,record:{align:"left",editable:!0,mandatory:!0}},{type:"string",name:"label",header:TermsUtil.tLabel("label"),sortable:!1,width:150,record:{align:"left",editable:!0,mandatory:!0}},{type:"string",name:"display",header:TermsUtil.tLabel("display"),sortable:!1,width:150,record:{align:"left",editable:!1,mandatory:!1,renderer:(e,t,i,a,l)=>{let r=i.label?i.label:i.name;return TermsUtil.tButton(r)}}},{type:"select",name:"type",header:TermsUtil.tLabel("type"),sortable:!1,width:100,record:{align:"left",editable:!0,mandatory:!0,options:["","basic","custom","grid-basic","grid-custom"]}},{type:"string",name:"style",header:TermsUtil.tLabel("style"),sortable:!1,width:100,record:{align:"left",editable:!0,mandatory:!1}},{type:"select",name:"auth",header:TermsUtil.tLabel("auth"),sortable:!1,width:80,record:{align:"left",editable:!0,mandatory:!0,options:[{value:"",display:""},{value:"R",display:"SELECT"},{value:"C",display:"CREATE"},{value:"U",display:"UPDATE"},{value:"D",display:"DELETE"}]}},{type:"parameters",name:"logic",header:TermsUtil.tLabel("logic"),sortable:!1,width:390,record:{align:"left",editable:!0,mandatory:!1,renderer:(e,t,i,a,l)=>{if(i.logic)"basic"===i.type&&(i.logic=void 0);else if("basic"===i.type)delete i.logic;else if("custom"===i.type){let e={logic:JSON.stringify({open_popup:{title:"menu.variables",title_detail:"name",type:"popup",menu:"menu-routing",tagname:"meta-grist-element",location:"pages/meta-grist-element.js",size:"large",popup_field:"param_field",parent_field:"id",param:["filter","grist_one","grist_selected","grist_changed"]},call_scenario:{type:"scenario",name:"testScenario",after:"fetch",param:["filter","grist_all","grist_selected"]}},null,2)};i.logic=e}else if("grid-basic"===i.type){let e={logic:'"record-view"'};i.logic=e}else if("grid-custom"===i.type){let e={logic:JSON.stringify({open_popup:{title:"menu.variables",title_detail:"name",type:"popup",menu:"menu-routing",tagname:"meta-grist-element",location:"pages/meta-grist-element.js",size:"large",popup_field:"param_field",parent_field:"id"},open_form_popup:{type:"form",title:"title.detail",title_detail:"name",size:"large",menu:"operation-master"},call_scenario:{type:"scenario",name:"testScenario",after:"fetch"}},null,2)};i.logic=e}else i.logic=void 0;return getRenderer("json5")(e,t,i,a,l)},options:(e,t,i,a,l)=>{var{name:r,help:n}={name:TermsUtil.tLabel("logic"),help:""};return{name:r,spec:[{label:"script",name:"logic",type:"textarea"}],help:n,context:this.buttonTabGrist}}}}]}}};
99
+ `
100
+ }
101
+
102
+ get buttonTabGrist() {
103
+ return this.shadowRoot.querySelector('#button-tab-grid')
104
+ }
105
+
106
+ async fetchButtonConfigTabHandler() {
107
+ return {
108
+ total: 0,
109
+ records: this.viewButtonData || []
110
+ }
111
+ }
112
+
113
+
114
+
115
+ setButtonConfigTabConfig() {
116
+
117
+ // 그리드 설정
118
+ this.buttonTabGridConfig = {
119
+ rows: MetaApi.getGristSelectableConfig(true),
120
+ pagination: { infinite: true },
121
+ sorters: [{ name: 'rank', desc: false }],
122
+ appendable: true,
123
+ columns: [
124
+ ...MetaApi.getGristGuttersConfig(false, false),
125
+ {
126
+ type: 'gutter', gutterName: 'button', icon: 'delete',
127
+ handlers: {
128
+ click: (_columns, _data, _column, record, _rowIndex) => {
129
+ if (record.id) {
130
+ this.deleteRow(this.buttonTabGrist, record);
131
+ }
132
+ }
133
+ },
134
+ },
135
+ {
136
+ type: 'string',
137
+ name: 'id',
138
+ hidden: true
139
+ },
140
+ {
141
+ type: 'integer',
142
+ name: 'rank',
143
+ header: TermsUtil.tLabel('rank'),
144
+ sortable: false,
145
+ width: 55,
146
+ record: {
147
+ align: 'right',
148
+ editable: true,
149
+ mandatory: true
150
+ }
151
+ },
152
+ {
153
+ type: 'string',
154
+ name: 'name',
155
+ header: TermsUtil.tLabel('name'),
156
+ sortable: false,
157
+ width: 150,
158
+ record: {
159
+ align: 'left',
160
+ editable: true,
161
+ mandatory: true
162
+ }
163
+ },
164
+ {
165
+ type: 'string',
166
+ name: 'label',
167
+ header: TermsUtil.tLabel('label'),
168
+ sortable: false,
169
+ width: 150,
170
+ record: {
171
+ align: 'left',
172
+ editable: true,
173
+ mandatory: true
174
+ }
175
+ },
176
+ {
177
+ type: 'string',
178
+ name: 'display',
179
+ header: TermsUtil.tLabel('display'),
180
+ sortable: false,
181
+ width: 150,
182
+ record: {
183
+ align: 'left',
184
+ editable: false,
185
+ mandatory: false,
186
+ renderer: (value, column, record, rowIndex, field) => {
187
+ let tLabel = record.label ? record.label : record.name;
188
+ return TermsUtil.tButton(tLabel)
189
+ }
190
+ }
191
+ },
192
+ {
193
+ type: 'select',
194
+ name: 'type',
195
+ header: TermsUtil.tLabel('type'),
196
+ sortable: false,
197
+ width: 100,
198
+ record: {
199
+ align: 'left',
200
+ editable: true,
201
+ mandatory: true,
202
+ options: ['', 'basic', 'custom', 'grid-basic', 'grid-custom']
203
+ }
204
+ },
205
+ {
206
+ type: 'string',
207
+ name: 'style',
208
+ header: TermsUtil.tLabel('style'),
209
+ sortable: false,
210
+ width: 100,
211
+ record: {
212
+ align: 'left',
213
+ editable: true,
214
+ mandatory: false
215
+ }
216
+ },
217
+ {
218
+ type: 'select',
219
+ name: 'auth',
220
+ header: TermsUtil.tLabel('auth'),
221
+ sortable: false,
222
+ width: 80,
223
+ record: {
224
+ align: 'left',
225
+ editable: true,
226
+ mandatory: true,
227
+ options: [
228
+ {value:'', display:''},
229
+ {value:'R', display:'SELECT'},
230
+ {value:'C', display:'CREATE'},
231
+ {value:'U', display:'UPDATE'},
232
+ {value:'D', display:'DELETE'}
233
+ ]
234
+ }
235
+ },
236
+ {
237
+ type: 'parameters',
238
+ name: 'logic',
239
+ header: TermsUtil.tLabel('logic'),
240
+ sortable: false,
241
+ width: 390,
242
+ record: {
243
+ align: 'left',
244
+ editable: true,
245
+ mandatory: false,
246
+ renderer: (value, column, record, rowIndex, field) => {
247
+ if (!record.logic) {
248
+ if (record.type === 'basic') {
249
+ delete record.logic;
250
+ } else if (record.type === 'custom') {
251
+ let guide = {
252
+ logic: JSON.stringify({
253
+ open_popup: {
254
+ "title": "menu.variables",
255
+ "title_detail": "name",
256
+ "type": "popup",
257
+ "menu": "menu-routing",
258
+ "tagname": "meta-grist-element",
259
+ "location": "pages/meta-grist-element.js",
260
+ "size": "large",
261
+ "popup_field": "param_field",
262
+ "parent_field": "id",
263
+ "param": [
264
+ "filter",
265
+ "grist_one",
266
+ "grist_selected",
267
+ "grist_changed"
268
+ ]
269
+ },
270
+ call_scenario: {
271
+ "type": "scenario",
272
+ "name": "testScenario",
273
+ "after": "fetch",
274
+ "param": [
275
+ "filter",
276
+ "grist_all",
277
+ "grist_selected"
278
+ ]
279
+ }
280
+ }, null, 2)
281
+ }
282
+ record.logic = guide;
283
+ } else if (record.type === 'grid-basic') {
284
+ let guide = {
285
+ logic: '"record-view"'
286
+ }
287
+ record.logic = guide;
288
+ } else if (record.type === 'grid-custom') {
289
+ let guide = {
290
+ logic: JSON.stringify({
291
+ open_popup: {
292
+ "title": "menu.variables",
293
+ "title_detail": "name",
294
+ "type": "popup",
295
+ "menu": "menu-routing",
296
+ "tagname": "meta-grist-element",
297
+ "location": "pages/meta-grist-element.js",
298
+ "size": "large",
299
+ "popup_field": "param_field",
300
+ "parent_field": "id",
301
+ },
302
+ open_form_popup: {
303
+ "type": "form",
304
+ "title": "title.detail",
305
+ "title_detail": "name",
306
+ "size": "large",
307
+ "menu": "operation-master"
308
+ },
309
+ call_scenario: {
310
+ "type": "scenario",
311
+ "name": "testScenario",
312
+ "after": "fetch"
313
+ }
314
+ }, null, 2)
315
+ }
316
+ record.logic = guide;
317
+ } else {
318
+ record.logic = undefined;
319
+ }
320
+ } else {
321
+ if (record.type === 'basic') {
322
+ record.logic = undefined;
323
+ }
324
+ }
325
+ return getRenderer('json5')(value, column, record, rowIndex, field)
326
+ },
327
+ options: (value, column, record, row, field) => {
328
+ var { name, help } = { name: TermsUtil.tLabel('logic'), help: '' };
329
+ let spec = [{ label: 'script', name: 'logic', type: 'textarea' }];
330
+ const context = this.buttonTabGrist
331
+ return { name, spec, help, context }
332
+ }
333
+ }
334
+ }
335
+ ]
336
+ }
337
+ }
338
+ }
339
+