@operato/scene-grist 2.0.0-alpha.6 → 2.0.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +43 -0
- package/dist/grist-action.d.ts +13 -1
- package/dist/grist-action.js +42 -2
- package/dist/grist-action.js.map +1 -1
- package/dist/grist.d.ts +3 -1
- package/dist/grist.js +31 -7
- package/dist/grist.js.map +1 -1
- package/helps/scene/component/grist-action.ko.md +15 -0
- package/helps/scene/component/grist-action.md +19 -6
- package/helps/scene/component/grist-action.zh.md +23 -11
- package/helps/scene/component/grist.ko.md +2 -0
- package/helps/scene/component/grist.md +2 -0
- package/helps/scene/component/grist.zh.md +7 -5
- package/package.json +6 -5
- package/schema.graphql +3976 -0
- package/src/grist-action.ts +56 -3
- package/src/grist.ts +45 -8
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,49 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [2.0.0-beta.0](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.12...v2.0.0-beta.0) (2024-06-01)
|
7
|
+
|
8
|
+
|
9
|
+
### :rocket: New Features
|
10
|
+
|
11
|
+
* 2.0.0-beta.0 ([a2e2869](https://github.com/things-scene/operato-scene/commit/a2e28694eedf5bab0c54bcab5432d54ec59edd7f))
|
12
|
+
* sandboxing evals ([56e7a2c](https://github.com/things-scene/operato-scene/commit/56e7a2cd2c28ee759213defb174d2729a6a90b33))
|
13
|
+
|
14
|
+
|
15
|
+
### :bug: Bug Fix
|
16
|
+
|
17
|
+
* allowJs in tsconfig option ([fa77174](https://github.com/things-scene/operato-scene/commit/fa771742188f21f177f0a85281570f59f0c478cf))
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
## [2.0.0-alpha.12](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.11...v2.0.0-alpha.12) (2024-05-11)
|
22
|
+
|
23
|
+
|
24
|
+
### :bug: Bug Fix
|
25
|
+
|
26
|
+
* ignore 'cache' folder for git and npm ([d70f811](https://github.com/things-scene/operato-scene/commit/d70f8118ff3e9248f80aa9435d6e6cbb8aacfcaf))
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
## [2.0.0-alpha.11](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.10...v2.0.0-alpha.11) (2024-04-23)
|
31
|
+
|
32
|
+
|
33
|
+
### :bug: Bug Fix
|
34
|
+
|
35
|
+
* grist 에서 i18next.t(..) 또는 t(..) 사용할 수 있도록 함. ([69ca0a9](https://github.com/things-scene/operato-scene/commit/69ca0a97a04846d37ad69917601cda4b66f9e155))
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
## [2.0.0-alpha.9](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.8...v2.0.0-alpha.9) (2024-04-11)
|
40
|
+
|
41
|
+
|
42
|
+
### :bug: Bug Fix
|
43
|
+
|
44
|
+
* grist-action 에 get ListParam action 추가 ([711adee](https://github.com/things-scene/operato-scene/commit/711adeece21877846532653bc116d37bc4742d57))
|
45
|
+
* things-factory@7.0.1 ([a9f4c18](https://github.com/things-scene/operato-scene/commit/a9f4c1873b80c540e4c2e16649e127ccffcf9a4c))
|
46
|
+
|
47
|
+
|
48
|
+
|
6
49
|
## [2.0.0-alpha.6](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2024-03-24)
|
7
50
|
|
8
51
|
|
package/dist/grist-action.d.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import 'ses';
|
1
2
|
import { Component, ComponentNature, Properties } from '@hatiolab/things-scene';
|
2
3
|
import { DataGrist } from '@operato/data-grist';
|
3
4
|
import { GristData, GristRecord } from '@operato/data-grist/src/types.js';
|
@@ -9,7 +10,8 @@ export declare enum ACTIONS {
|
|
9
10
|
GET_DIRTY = "getDirtyRows",
|
10
11
|
ADD_ROW = "addRow",
|
11
12
|
DELETE_SELECTED_ROWS = "deleteSelectedRowsSoftly",
|
12
|
-
GET_PAGE_INFO = "getPageInfo"
|
13
|
+
GET_PAGE_INFO = "getPageInfo",
|
14
|
+
GET_LIST_PARAM = "getListParam"
|
13
15
|
}
|
14
16
|
declare const GristAction_base: (new (...args: any[]) => {
|
15
17
|
value: number;
|
@@ -39,6 +41,16 @@ export default class GristAction extends GristAction_base {
|
|
39
41
|
limit: any;
|
40
42
|
sorters: any;
|
41
43
|
};
|
44
|
+
getListParamFrom(grist: DataGrist | null, fetchedData?: GristData): {
|
45
|
+
pagination: {
|
46
|
+
page: any;
|
47
|
+
limit: any;
|
48
|
+
};
|
49
|
+
sortings: any;
|
50
|
+
filters: any;
|
51
|
+
inherited: any;
|
52
|
+
options: any;
|
53
|
+
};
|
42
54
|
buildPatches(patches: GristRecord[]): GristRecord[];
|
43
55
|
render(context: CanvasRenderingContext2D): void;
|
44
56
|
postrender(context: CanvasRenderingContext2D): void;
|
package/dist/grist-action.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
*
|
4
4
|
* grist 컴포넌트를 보조하여 grist의 각종 동작을 수행하는 컴포넌트.
|
5
5
|
*/
|
6
|
+
import 'ses';
|
6
7
|
import { Component, RectPath, ValueHolder } from '@hatiolab/things-scene';
|
7
8
|
export var ACTIONS;
|
8
9
|
(function (ACTIONS) {
|
@@ -13,6 +14,7 @@ export var ACTIONS;
|
|
13
14
|
ACTIONS["ADD_ROW"] = "addRow";
|
14
15
|
ACTIONS["DELETE_SELECTED_ROWS"] = "deleteSelectedRowsSoftly";
|
15
16
|
ACTIONS["GET_PAGE_INFO"] = "getPageInfo";
|
17
|
+
ACTIONS["GET_LIST_PARAM"] = "getListParam";
|
16
18
|
})(ACTIONS || (ACTIONS = {}));
|
17
19
|
const NATURE = {
|
18
20
|
mutable: false,
|
@@ -40,6 +42,11 @@ const NATURE = {
|
|
40
42
|
display: 'Get page information',
|
41
43
|
value: ACTIONS.GET_PAGE_INFO
|
42
44
|
},
|
45
|
+
{
|
46
|
+
// 페이지네이션 정보 가져오기
|
47
|
+
display: 'Get ListParam',
|
48
|
+
value: ACTIONS.GET_LIST_PARAM
|
49
|
+
},
|
43
50
|
{
|
44
51
|
// 모든 레코드 데이터 가져오기
|
45
52
|
display: 'Get all rows',
|
@@ -122,6 +129,12 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
122
129
|
this.doDataMap();
|
123
130
|
};
|
124
131
|
}
|
132
|
+
else if (after.action == ACTIONS.GET_LIST_PARAM) {
|
133
|
+
gristComponent.beforeFetchFuncs[refid] = (fetchedData) => {
|
134
|
+
this.data = this.getListParamFrom(null, fetchedData);
|
135
|
+
this.doDataMap();
|
136
|
+
};
|
137
|
+
}
|
125
138
|
else {
|
126
139
|
delete gristComponent.beforeFetchFuncs[refid];
|
127
140
|
}
|
@@ -168,9 +181,10 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
168
181
|
case ACTIONS.ADD_ROW:
|
169
182
|
{
|
170
183
|
var records = grist.dirtyData.records || [];
|
184
|
+
const c = new Compartment();
|
171
185
|
let recordFormat;
|
172
186
|
try {
|
173
|
-
recordFormat =
|
187
|
+
recordFormat = c.evaluate(`(${this.state.recordFormat})`);
|
174
188
|
}
|
175
189
|
catch (e) {
|
176
190
|
console.log('Invalid JSON format. It will be assumed as empty object.\n', e);
|
@@ -198,6 +212,9 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
198
212
|
case ACTIONS.GET_PAGE_INFO:
|
199
213
|
data = this.getPageInfoFrom(grist);
|
200
214
|
break;
|
215
|
+
case ACTIONS.GET_LIST_PARAM:
|
216
|
+
data = this.getListParamFrom(grist);
|
217
|
+
break;
|
201
218
|
}
|
202
219
|
// 이 컴포넌트의 data 값이 바뀌는 동작은 데이터 매핑까지 실행함
|
203
220
|
if (data) {
|
@@ -260,6 +277,29 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
260
277
|
return {};
|
261
278
|
}
|
262
279
|
}
|
280
|
+
// Grist로부터 ListParam 정보를 가져옴
|
281
|
+
getListParamFrom(grist, fetchedData) {
|
282
|
+
var { page = 1, limit = 20, sorters, sortings, filters = [], inherited, options
|
283
|
+
// @ts-ignore
|
284
|
+
} = fetchedData || (grist && grist.dataProvider) || pagination(grist);
|
285
|
+
return {
|
286
|
+
pagination: { page, limit },
|
287
|
+
sortings: sorters || sortings,
|
288
|
+
filters,
|
289
|
+
inherited,
|
290
|
+
options
|
291
|
+
};
|
292
|
+
function pagination(grist) {
|
293
|
+
var config = grist && grist.config && grist.config.pagination;
|
294
|
+
if (config)
|
295
|
+
return {
|
296
|
+
page: config.page,
|
297
|
+
limit: config.limit || (config.pages && config.pages[0])
|
298
|
+
};
|
299
|
+
else
|
300
|
+
return {};
|
301
|
+
}
|
302
|
+
}
|
263
303
|
// 레코드들을 서버 공통 resolver에 맞는 포맷으로 만듦
|
264
304
|
buildPatches(patches) {
|
265
305
|
return patches.map(patch => {
|
@@ -298,7 +338,7 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
298
338
|
}
|
299
339
|
get targetGristComponent() {
|
300
340
|
var { target } = this.state;
|
301
|
-
return this.root.findById(target);
|
341
|
+
return target && this.root.findById(target);
|
302
342
|
}
|
303
343
|
get targetGristElement() {
|
304
344
|
var _a;
|
package/dist/grist-action.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"grist-action.js","sourceRoot":"","sources":["../src/grist-action.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n *\n * grist 컴포넌트를 보조하여 grist의 각종 동작을 수행하는 컴포넌트.\n */\n\nimport { Component, ComponentNature, Properties, RectPath, ValueHolder } from '@hatiolab/things-scene'\nimport { DataGrist } from '@operato/data-grist'\nimport { GristData, GristRecord, SorterConfig } from '@operato/data-grist/src/types.js'\n\nimport SceneGrist from './grist'\n\nexport enum ACTIONS {\n GET_ALL_ROWS = 'getAllRows',\n COMMIT = 'commit',\n GET_SELECTED = 'getSelectedRows',\n GET_DIRTY = 'getDirtyRows',\n ADD_ROW = 'addRow',\n DELETE_SELECTED_ROWS = 'deleteSelectedRowsSoftly',\n GET_PAGE_INFO = 'getPageInfo'\n}\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n // 대상 Grist\n type: 'id-input',\n label: 'target-grist',\n name: 'target',\n property: {\n component: 'grist'\n }\n },\n {\n // 동작\n type: 'select',\n label: 'action',\n name: 'action',\n property: {\n options: [\n {\n // 페이지네이션 정보 가져오기\n display: 'Get page information',\n value: ACTIONS.GET_PAGE_INFO\n },\n {\n // 모든 레코드 데이터 가져오기\n display: 'Get all rows',\n value: ACTIONS.GET_ALL_ROWS\n },\n {\n // 체크된 레코드 데이터 가져오기\n display: 'Get selected rows',\n value: ACTIONS.GET_SELECTED\n },\n {\n // 변경 사항이 있는 데이터 가져오기\n display: 'Get dirty rows',\n value: ACTIONS.GET_DIRTY\n },\n {\n // 행 추가\n display: 'Add a row',\n value: ACTIONS.ADD_ROW\n },\n {\n // 선택 행 삭제\n display: 'Delete selected rows',\n value: ACTIONS.DELETE_SELECTED_ROWS\n },\n {\n // 변경 사항을 데이터에 적용\n display: 'Commit',\n value: ACTIONS.COMMIT\n }\n ]\n }\n },\n {\n // 뷰어 시작 시 자동 실행 여부\n type: 'checkbox',\n label: 'run-at-startup',\n name: 'runAtStartup'\n },\n {\n // 행 추가 시의 포맷\n type: 'textarea',\n label: 'record-adder-format',\n name: 'recordFormat'\n }\n ],\n help: 'scene/component/grist-action'\n}\n\nexport default class GristAction extends ValueHolder(RectPath(Component)) {\n private _data: any\n\n get nature() {\n return NATURE\n }\n\n ready() {\n // 뷰어 시작시에도 action 값이 getPageInfo로 되어 있을 경우 fetchHandler를 등록하기 위해 onchange를 호출함\n this.onchange({ action: this.state.action })\n if (this.state.runAtStartup) {\n setTimeout(() => this.doAction(), 100)\n }\n }\n\n dispose() {\n super.dispose()\n }\n\n onclick() {\n // 컴포넌트 클릭 시 동작\n this.doAction()\n }\n\n onchange(after: Properties) {\n // value 값이 바뀌면 동작\n if ('value' in after) {\n this.doAction()\n }\n\n // action 값이 바뀌면 getPageInfo인지 확인하고 grist에 fetchHandler를 등록하거나 폐기함\n if ('action' in after) {\n const gristComponent = this.targetGristComponent\n const { refid } = this.state\n\n if (gristComponent) {\n if (after.action == ACTIONS.GET_PAGE_INFO) {\n gristComponent.beforeFetchFuncs[refid] = (fetchedData: {\n page: number\n limit: number\n total: number\n records: GristRecord[]\n }) => {\n this.data = this.getPageInfoFrom(null, fetchedData)\n this.doDataMap()\n }\n } else {\n delete gristComponent.beforeFetchFuncs[refid]\n }\n }\n }\n }\n\n // 데이터 매핑을 수동으로 실행하기 위해 기존의 메소드를 무효화\n executeMappings() {\n console.debug(\n \"[@operato/data-grist] The method 'executeMappings' is overriden in the component 'grist-action', because of to prevent executing when initialize.\"\n )\n }\n\n // 데이터 매핑을 수동으로 조작하기 위한 새 메소드\n doDataMap() {\n super.executeMappings()\n }\n\n // action 값에 따라 동작\n doAction(action?: ACTIONS) {\n if (!this.app.isViewMode) {\n return\n }\n\n // 파라미터가 명시되어있지 않으면 컴포넌트 속성에서 action 값을 가져옴\n var { action: storedAction } = this.state\n action = action || storedAction\n\n // 대상 Grist 컴포넌트\n var grist = this.targetGristElement\n if (!grist) return\n\n var data\n switch (action) {\n case ACTIONS.GET_ALL_ROWS:\n data = grist.grist.data\n break\n case ACTIONS.COMMIT:\n grist.commit()\n break\n case ACTIONS.GET_SELECTED:\n data = {\n patches: this.buildPatches(grist.selected),\n original: grist.selected\n }\n break\n case ACTIONS.GET_DIRTY:\n data = this.assortDirties(grist)\n break\n case ACTIONS.ADD_ROW:\n {\n var records = grist.dirtyData.records || []\n\n let recordFormat\n try {\n recordFormat = eval(`(${this.state.recordFormat})`)\n } catch (e) {\n console.log('Invalid JSON format. It will be assumed as empty object.\\n', e)\n recordFormat = {}\n }\n records.push({ ...recordFormat, __dirty__: '+' })\n this.refreshGrist(grist)\n }\n break\n case ACTIONS.DELETE_SELECTED_ROWS:\n {\n var records = grist.dirtyData.records || []\n\n records.forEach((record, idx) => {\n if (record['__selected__']) {\n if (record['__dirty__'] == '+') delete records[idx]\n else record['__dirty__'] = '-'\n }\n })\n grist.dirtyData.records = records.flat()\n this.refreshGrist(grist)\n }\n break\n case ACTIONS.GET_PAGE_INFO:\n data = this.getPageInfoFrom(grist)\n break\n }\n\n // 이 컴포넌트의 data 값이 바뀌는 동작은 데이터 매핑까지 실행함\n if (data) {\n this.data = data\n this.doDataMap()\n }\n }\n\n // 대상 grist 컴포넌트의 레코드를 새로고침\n refreshGrist(grist: DataGrist) {\n grist = grist || this.targetGristElement\n if (!grist) return\n\n grist.refresh()\n // grist.dataProvider.onRecordChange()\n grist.grist.data = { ...grist.dirtyData }\n }\n\n // 변경 사항이 있는 레코드의 경우, CUD를 분류해서 반환함\n assortDirties(grist: DataGrist) {\n const dirties = grist.dirtyRecords\n var patches = this.buildPatches(dirties)\n var records = {\n original: dirties,\n patches,\n created: [] as GristRecord[],\n updated: [] as GristRecord[],\n deleted: [] as GristRecord[]\n }\n\n patches.forEach((record: GristRecord) => {\n switch (record['cuFlag']) {\n case 'M':\n records.updated.push(record)\n break\n case '+':\n records.created.push(record)\n break\n case '-':\n records.deleted.push(record)\n break\n }\n })\n return records\n }\n\n // 페이지네이션 정보를 가져옴\n getPageInfoFrom(grist: DataGrist | null, fetchedData?: GristData) {\n // @ts-ignore\n var { page = 1, limit = 20, sorters = [] } = fetchedData || (grist && grist.dataProvider) || pagination(grist!)\n\n sorters = sorters.map((sorter: SorterConfig) => {\n sorter.desc = sorter.desc ? true : false\n return sorter\n })\n return { page, limit, sorters }\n\n function pagination(grist: DataGrist) {\n var config = grist && grist.config && grist.config.pagination\n if (config)\n return {\n page: config.page,\n limit: config.limit || (config.pages && config.pages[0])\n }\n else return {}\n }\n }\n\n // 레코드들을 서버 공통 resolver에 맞는 포맷으로 만듦\n buildPatches(patches: GristRecord[]): GristRecord[] {\n return patches.map(patch => {\n let patchField: { [key: string]: any } = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n }\n\n render(context: CanvasRenderingContext2D) {\n var { top, left, height, width, fillStyle = 'transparent' } = this.state\n\n // background의 색상\n context.beginPath()\n context.rect(left, top, width, height)\n\n context.fillStyle = fillStyle\n context.fill()\n\n // value의 색상\n context.beginPath()\n\n var drawValue = width - (width * Math.max(Math.min(this.animValue, 100), 0)) / 100\n drawValue = Math.max(Math.min(drawValue, width), 0)\n\n context.rect(left + drawValue, top, width - drawValue, height)\n\n this.drawFill(context)\n\n context.closePath()\n\n context.beginPath()\n\n context.rect(left, top, width, height)\n }\n\n postrender(context: CanvasRenderingContext2D) {\n this.drawStroke(context)\n this.drawText(context)\n }\n\n get controls() {\n return []\n }\n\n get targetGristComponent(): SceneGrist {\n var { target } = this.state\n return this.root.findById(target) as SceneGrist\n }\n\n get targetGristElement(): DataGrist | undefined {\n return this.targetGristComponent?.grist\n }\n\n get data() {\n return this._data\n }\n\n set data(data) {\n this._data = data\n }\n}\n\nComponent.register('grist-action', GristAction)\n"]}
|
1
|
+
{"version":3,"file":"grist-action.js","sourceRoot":"","sources":["../src/grist-action.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n *\n * grist 컴포넌트를 보조하여 grist의 각종 동작을 수행하는 컴포넌트.\n */\nimport 'ses'\n\nimport { Component, ComponentNature, Properties, RectPath, ValueHolder } from '@hatiolab/things-scene'\nimport { DataGrist } from '@operato/data-grist'\nimport { GristData, GristRecord, SorterConfig } from '@operato/data-grist/src/types.js'\n\nimport SceneGrist from './grist'\n\nexport enum ACTIONS {\n GET_ALL_ROWS = 'getAllRows',\n COMMIT = 'commit',\n GET_SELECTED = 'getSelectedRows',\n GET_DIRTY = 'getDirtyRows',\n ADD_ROW = 'addRow',\n DELETE_SELECTED_ROWS = 'deleteSelectedRowsSoftly',\n GET_PAGE_INFO = 'getPageInfo',\n GET_LIST_PARAM = 'getListParam'\n}\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n // 대상 Grist\n type: 'id-input',\n label: 'target-grist',\n name: 'target',\n property: {\n component: 'grist'\n }\n },\n {\n // 동작\n type: 'select',\n label: 'action',\n name: 'action',\n property: {\n options: [\n {\n // 페이지네이션 정보 가져오기\n display: 'Get page information',\n value: ACTIONS.GET_PAGE_INFO\n },\n {\n // 페이지네이션 정보 가져오기\n display: 'Get ListParam',\n value: ACTIONS.GET_LIST_PARAM\n },\n {\n // 모든 레코드 데이터 가져오기\n display: 'Get all rows',\n value: ACTIONS.GET_ALL_ROWS\n },\n {\n // 체크된 레코드 데이터 가져오기\n display: 'Get selected rows',\n value: ACTIONS.GET_SELECTED\n },\n {\n // 변경 사항이 있는 데이터 가져오기\n display: 'Get dirty rows',\n value: ACTIONS.GET_DIRTY\n },\n {\n // 행 추가\n display: 'Add a row',\n value: ACTIONS.ADD_ROW\n },\n {\n // 선택 행 삭제\n display: 'Delete selected rows',\n value: ACTIONS.DELETE_SELECTED_ROWS\n },\n {\n // 변경 사항을 데이터에 적용\n display: 'Commit',\n value: ACTIONS.COMMIT\n }\n ]\n }\n },\n {\n // 뷰어 시작 시 자동 실행 여부\n type: 'checkbox',\n label: 'run-at-startup',\n name: 'runAtStartup'\n },\n {\n // 행 추가 시의 포맷\n type: 'textarea',\n label: 'record-adder-format',\n name: 'recordFormat'\n }\n ],\n help: 'scene/component/grist-action'\n}\n\nexport default class GristAction extends ValueHolder(RectPath(Component)) {\n private _data: any\n\n get nature() {\n return NATURE\n }\n\n ready() {\n // 뷰어 시작시에도 action 값이 getPageInfo로 되어 있을 경우 fetchHandler를 등록하기 위해 onchange를 호출함\n this.onchange({ action: this.state.action })\n if (this.state.runAtStartup) {\n setTimeout(() => this.doAction(), 100)\n }\n }\n\n dispose() {\n super.dispose()\n }\n\n onclick() {\n // 컴포넌트 클릭 시 동작\n this.doAction()\n }\n\n onchange(after: Properties) {\n // value 값이 바뀌면 동작\n if ('value' in after) {\n this.doAction()\n }\n\n // action 값이 바뀌면 getPageInfo인지 확인하고 grist에 fetchHandler를 등록하거나 폐기함\n if ('action' in after) {\n const gristComponent = this.targetGristComponent\n const { refid } = this.state\n\n if (gristComponent) {\n if (after.action == ACTIONS.GET_PAGE_INFO) {\n gristComponent.beforeFetchFuncs[refid] = (fetchedData: {\n page: number\n limit: number\n total: number\n records: GristRecord[]\n }) => {\n this.data = this.getPageInfoFrom(null, fetchedData)\n this.doDataMap()\n }\n } else if (after.action == ACTIONS.GET_LIST_PARAM) {\n gristComponent.beforeFetchFuncs[refid] = (fetchedData: {\n page: number\n limit: number\n total: number\n records: GristRecord[]\n }) => {\n this.data = this.getListParamFrom(null, fetchedData)\n this.doDataMap()\n }\n } else {\n delete gristComponent.beforeFetchFuncs[refid]\n }\n }\n }\n }\n\n // 데이터 매핑을 수동으로 실행하기 위해 기존의 메소드를 무효화\n executeMappings() {\n console.debug(\n \"[@operato/data-grist] The method 'executeMappings' is overriden in the component 'grist-action', because of to prevent executing when initialize.\"\n )\n }\n\n // 데이터 매핑을 수동으로 조작하기 위한 새 메소드\n doDataMap() {\n super.executeMappings()\n }\n\n // action 값에 따라 동작\n doAction(action?: ACTIONS) {\n if (!this.app.isViewMode) {\n return\n }\n\n // 파라미터가 명시되어있지 않으면 컴포넌트 속성에서 action 값을 가져옴\n var { action: storedAction } = this.state\n action = action || storedAction\n\n // 대상 Grist 컴포넌트\n var grist = this.targetGristElement\n if (!grist) return\n\n var data\n switch (action) {\n case ACTIONS.GET_ALL_ROWS:\n data = grist.grist.data\n break\n case ACTIONS.COMMIT:\n grist.commit()\n break\n case ACTIONS.GET_SELECTED:\n data = {\n patches: this.buildPatches(grist.selected),\n original: grist.selected\n }\n break\n case ACTIONS.GET_DIRTY:\n data = this.assortDirties(grist)\n break\n case ACTIONS.ADD_ROW:\n {\n var records = grist.dirtyData.records || []\n const c = new Compartment()\n\n let recordFormat\n try {\n recordFormat = c.evaluate(`(${this.state.recordFormat})`)\n } catch (e) {\n console.log('Invalid JSON format. It will be assumed as empty object.\\n', e)\n recordFormat = {}\n }\n records.push({ ...recordFormat, __dirty__: '+' })\n this.refreshGrist(grist)\n }\n break\n case ACTIONS.DELETE_SELECTED_ROWS:\n {\n var records = grist.dirtyData.records || []\n\n records.forEach((record, idx) => {\n if (record['__selected__']) {\n if (record['__dirty__'] == '+') delete records[idx]\n else record['__dirty__'] = '-'\n }\n })\n grist.dirtyData.records = records.flat()\n this.refreshGrist(grist)\n }\n break\n case ACTIONS.GET_PAGE_INFO:\n data = this.getPageInfoFrom(grist)\n break\n case ACTIONS.GET_LIST_PARAM:\n data = this.getListParamFrom(grist)\n break\n }\n\n // 이 컴포넌트의 data 값이 바뀌는 동작은 데이터 매핑까지 실행함\n if (data) {\n this.data = data\n this.doDataMap()\n }\n }\n\n // 대상 grist 컴포넌트의 레코드를 새로고침\n refreshGrist(grist: DataGrist) {\n grist = grist || this.targetGristElement\n if (!grist) return\n\n grist.refresh()\n // grist.dataProvider.onRecordChange()\n grist.grist.data = { ...grist.dirtyData }\n }\n\n // 변경 사항이 있는 레코드의 경우, CUD를 분류해서 반환함\n assortDirties(grist: DataGrist) {\n const dirties = grist.dirtyRecords\n var patches = this.buildPatches(dirties)\n var records = {\n original: dirties,\n patches,\n created: [] as GristRecord[],\n updated: [] as GristRecord[],\n deleted: [] as GristRecord[]\n }\n\n patches.forEach((record: GristRecord) => {\n switch (record['cuFlag']) {\n case 'M':\n records.updated.push(record)\n break\n case '+':\n records.created.push(record)\n break\n case '-':\n records.deleted.push(record)\n break\n }\n })\n return records\n }\n\n // 페이지네이션 정보를 가져옴\n getPageInfoFrom(grist: DataGrist | null, fetchedData?: GristData) {\n // @ts-ignore\n var { page = 1, limit = 20, sorters = [] } = fetchedData || (grist && grist.dataProvider) || pagination(grist!)\n\n sorters = sorters.map((sorter: SorterConfig) => {\n sorter.desc = sorter.desc ? true : false\n return sorter\n })\n return { page, limit, sorters }\n\n function pagination(grist: DataGrist) {\n var config = grist && grist.config && grist.config.pagination\n if (config)\n return {\n page: config.page,\n limit: config.limit || (config.pages && config.pages[0])\n }\n else return {}\n }\n }\n\n // Grist로부터 ListParam 정보를 가져옴\n getListParamFrom(grist: DataGrist | null, fetchedData?: GristData) {\n var {\n page = 1,\n limit = 20,\n sorters,\n sortings,\n filters = [],\n inherited,\n options\n // @ts-ignore\n } = fetchedData || (grist && grist.dataProvider) || pagination(grist!)\n\n return {\n pagination: { page, limit },\n sortings: sorters || sortings,\n filters,\n inherited,\n options\n }\n\n function pagination(grist: DataGrist) {\n var config = grist && grist.config && grist.config.pagination\n if (config)\n return {\n page: config.page,\n limit: config.limit || (config.pages && config.pages[0])\n }\n else return {}\n }\n }\n\n // 레코드들을 서버 공통 resolver에 맞는 포맷으로 만듦\n buildPatches(patches: GristRecord[]): GristRecord[] {\n return patches.map(patch => {\n let patchField: { [key: string]: any } = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n }\n\n render(context: CanvasRenderingContext2D) {\n var { top, left, height, width, fillStyle = 'transparent' } = this.state\n\n // background의 색상\n context.beginPath()\n context.rect(left, top, width, height)\n\n context.fillStyle = fillStyle\n context.fill()\n\n // value의 색상\n context.beginPath()\n\n var drawValue = width - (width * Math.max(Math.min(this.animValue, 100), 0)) / 100\n drawValue = Math.max(Math.min(drawValue, width), 0)\n\n context.rect(left + drawValue, top, width - drawValue, height)\n\n this.drawFill(context)\n\n context.closePath()\n\n context.beginPath()\n\n context.rect(left, top, width, height)\n }\n\n postrender(context: CanvasRenderingContext2D) {\n this.drawStroke(context)\n this.drawText(context)\n }\n\n get controls() {\n return []\n }\n\n get targetGristComponent(): SceneGrist {\n var { target } = this.state\n return target && (this.root.findById(target) as SceneGrist)\n }\n\n get targetGristElement(): DataGrist | undefined {\n return this.targetGristComponent?.grist\n }\n\n get data() {\n return this._data\n }\n\n set data(data) {\n this._data = data\n }\n}\n\nComponent.register('grist-action', GristAction)\n"]}
|
package/dist/grist.d.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
import '
|
1
|
+
import 'ses';
|
2
|
+
import '@operato/data-grist/ox-grist.js';
|
3
|
+
import '@operato/data-grist/ox-filters-form.js';
|
2
4
|
import { ComponentNature, HTMLOverlayElement, Properties } from '@hatiolab/things-scene';
|
3
5
|
import { DataGrist } from '@operato/data-grist';
|
4
6
|
export default class SceneGrist extends HTMLOverlayElement {
|
package/dist/grist.js
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
/*
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
3
3
|
*/
|
4
|
-
import '
|
4
|
+
import 'ses';
|
5
|
+
import '@operato/data-grist/ox-grist.js';
|
6
|
+
import '@operato/data-grist/ox-filters-form.js';
|
5
7
|
import { Component, error, HTMLOverlayElement } from '@hatiolab/things-scene';
|
8
|
+
import { i18next as _i18next } from '@operato/i18n';
|
6
9
|
const NATURE = {
|
7
10
|
mutable: false,
|
8
11
|
resizable: true,
|
@@ -38,6 +41,11 @@ const NATURE = {
|
|
38
41
|
label: 'config',
|
39
42
|
name: 'config'
|
40
43
|
},
|
44
|
+
{
|
45
|
+
type: 'checkbox',
|
46
|
+
label: 'filterable',
|
47
|
+
name: 'filterable'
|
48
|
+
},
|
41
49
|
{
|
42
50
|
type: 'checkbox',
|
43
51
|
label: 'appendable',
|
@@ -111,13 +119,12 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
111
119
|
createElement() {
|
112
120
|
super.createElement();
|
113
121
|
this.grist = document.createElement('ox-grist');
|
114
|
-
this.grist.style.setProperty('--grist-padding', '0');
|
115
122
|
this.element.appendChild(this.grist);
|
116
123
|
this.rescale();
|
117
124
|
const grist = this.grist;
|
118
125
|
this.setGristConfig(grist);
|
119
|
-
grist.fetchHandler = async ({ page, limit, sorters, options }) => {
|
120
|
-
Object.values(this.beforeFetchFuncs).forEach((func) => func({ page, limit, sorters, options }));
|
126
|
+
grist.fetchHandler = async ({ page, limit, sorters, sortings, filters, inherited, options }) => {
|
127
|
+
Object.values(this.beforeFetchFuncs).forEach((func) => func({ page, limit, sorters, sortings, filters, inherited, options }));
|
121
128
|
var { total = 0, records = [] } = grist.data || {};
|
122
129
|
return {
|
123
130
|
page,
|
@@ -171,7 +178,11 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
171
178
|
}
|
172
179
|
onchange(after, before) {
|
173
180
|
super.onchange(after, before);
|
174
|
-
if ('mode' in after ||
|
181
|
+
if ('mode' in after ||
|
182
|
+
'filterable' in after ||
|
183
|
+
'appendable' in after ||
|
184
|
+
'paginatable' in after ||
|
185
|
+
'config' in after) {
|
175
186
|
this.setGristConfig(this.grist);
|
176
187
|
}
|
177
188
|
this.rescale();
|
@@ -193,7 +204,7 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
193
204
|
if (!grist) {
|
194
205
|
return;
|
195
206
|
}
|
196
|
-
var { mode } = this.state;
|
207
|
+
var { mode, filterable } = this.state;
|
197
208
|
if (mode != 'DEVICE') {
|
198
209
|
grist.mode = mode;
|
199
210
|
}
|
@@ -201,6 +212,15 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
201
212
|
grist.mode = isMobileDevice() ? 'LIST' : 'GRID';
|
202
213
|
}
|
203
214
|
grist.config = this.config;
|
215
|
+
grist.innerHTML = filterable
|
216
|
+
? `
|
217
|
+
<div slot="headroom">
|
218
|
+
<div style="padding: 9px 9px 0px 9px;">
|
219
|
+
<ox-filters-form autofocus></ox-filters-form>
|
220
|
+
</div>
|
221
|
+
</div>
|
222
|
+
`
|
223
|
+
: '';
|
204
224
|
}
|
205
225
|
/*
|
206
226
|
* 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.
|
@@ -233,7 +253,11 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
233
253
|
var { config, appendable, paginatable } = this.state;
|
234
254
|
if (typeof config !== 'object') {
|
235
255
|
try {
|
236
|
-
|
256
|
+
const c = new Compartment({
|
257
|
+
t: _i18next.t,
|
258
|
+
i18next: _i18next
|
259
|
+
});
|
260
|
+
config = c.evaluate(`(${config})`);
|
237
261
|
}
|
238
262
|
catch (e) {
|
239
263
|
error(e);
|
package/dist/grist.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"grist.js","sourceRoot":"","sources":["../src/grist.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@operato/data-grist'\n\nimport { Component, ComponentNature, error, HTMLOverlayElement, Properties } from '@hatiolab/things-scene'\nimport { DataGrist, FetchResult } from '@operato/data-grist'\nimport { FetchOption } from '@operato/data-grist/dist/src/types'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'grist-mode',\n name: 'mode',\n property: {\n options: [\n {\n display: 'Grid',\n value: 'GRID'\n },\n {\n display: 'List',\n value: 'LIST'\n },\n {\n display: 'Card',\n value: 'CARD'\n },\n {\n display: 'Depends on device',\n value: 'DEVICE'\n }\n ]\n }\n },\n {\n type: 'textarea',\n label: 'config',\n name: 'config'\n },\n {\n type: 'checkbox',\n label: 'appendable',\n name: 'appendable'\n },\n {\n type: 'checkbox',\n label: 'paginatable',\n name: 'paginatable'\n },\n {\n type: 'number',\n label: 'content-scale',\n name: 'contentScale',\n property: {\n step: 0.1,\n min: 0.1\n }\n },\n {\n type: 'select',\n label: 'bound-data',\n name: 'boundData',\n property: {\n options: [\n {\n display: '',\n value: ''\n },\n {\n display: 'Focused Row',\n value: 'focused-row'\n },\n {\n display: 'Selected Rows',\n value: 'selected-rows'\n }\n ]\n }\n }\n ],\n help: 'scene/component/grist'\n}\n\nconst isMobileDevice = () => false\n\nexport default class SceneGrist extends HTMLOverlayElement {\n public beforeFetchFuncs: any = {}\n\n private __value: any = {}\n private _listenTo?: any\n private _listener?: any\n\n public grist?: DataGrist\n\n get nature() {\n return NATURE\n }\n\n ready() {\n super.ready()\n\n if (this.rootModel) {\n this._listenTo = this.rootModel\n this._listener = function (this: SceneGrist, after: Properties) {\n after.scale && this.rescale()\n }.bind(this)\n this.rootModel.on('change', this._listener)\n }\n }\n\n removed() {\n if (this._listenTo) {\n this._listenTo.off('change', this._listener)\n\n delete this._listenTo\n delete this._listener\n }\n }\n\n createElement() {\n super.createElement()\n\n this.grist = document.createElement('ox-grist') as DataGrist\n this.grist.style.setProperty('--grist-padding', '0')\n\n this.element.appendChild(this.grist)\n\n this.rescale()\n\n const grist = this.grist\n\n this.setGristConfig(grist)\n\n grist.fetchHandler = async ({ page, limit, sorters, options }: FetchOption): Promise<FetchResult> => {\n Object.values(this.beforeFetchFuncs).forEach((func: any) => func({ page, limit, sorters, options }))\n var { total = 0, records = [] } = grist.data || {}\n\n return {\n page,\n limit,\n total,\n records\n }\n }\n\n grist.addEventListener('select-record-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('select-all-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('focus-change', (e: Event) => {\n if (this.state.boundData === 'focused-row') {\n this.data = ((e.target as DataGrist)?.data?.records || [])[(e as CustomEvent).detail.row]\n }\n })\n }\n\n get value() {\n return this.__value\n }\n\n set value(value) {\n this.__value = value\n if (!this.grist || typeof value !== 'object') return\n\n var { page, limit } = this.config.pagination || {}\n\n this.grist.data =\n value instanceof Array\n ? {\n page,\n limit,\n ...this.grist._data,\n total: value.length,\n records: Array.from(value)\n }\n : {\n page,\n limit,\n ...this.grist._data,\n ...value\n }\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if ('mode' in after || 'appendable' in after || 'paginatable' in after || 'config' in after) {\n this.setGristConfig(this.grist)\n }\n\n this.rescale()\n }\n\n dispose() {\n super.dispose()\n\n delete this.grist\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(grist: DataGrist) {\n this.rescale()\n }\n\n setGristConfig(grist: DataGrist | undefined) {\n if (!grist) {\n return\n }\n\n var { mode } = this.state\n\n if (mode != 'DEVICE') {\n grist.mode = mode\n } else {\n grist.mode = isMobileDevice() ? 'LIST' : 'GRID'\n }\n\n grist.config = this.config\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n /*\n * grist는 부모의 스케일의 역으로 transform해서, scale을 1로 맞춘다.\n */\n rescale() {\n var grist = this.grist\n if (!grist) {\n return\n }\n\n const scale = this.getState('contentScale') || 1\n\n const sx = scale\n const sy = scale\n\n const transform = `scale(${sx}, ${sy})`\n\n ;['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach((prefix: string) => {\n grist!.style.setProperty(prefix + 'transform', transform)\n grist!.style.setProperty(prefix + 'transform-origin', '0px 0px')\n })\n\n const { width, height } = this.state\n grist.style.width = Math.round(width / scale) + 'px'\n grist.style.height = Math.round(height / scale) + 'px'\n }\n\n get config() {\n var { config, appendable, paginatable } = this.state\n\n if (typeof config !== 'object') {\n try {\n config = eval(`(${config})`)\n } catch (e) {\n error(e)\n }\n }\n\n if (paginatable) {\n if (config.pagination && !config.pagination.limit && config.pagination.pages && config.pagination.pages.length) {\n config.pagination.limit = config.pagination.pages[0]\n }\n }\n\n config.pagination = {\n ...config.pagination,\n infinite: !paginatable\n }\n\n config.rows = {\n ...config.rows,\n appendable: !!appendable\n }\n\n return config\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('grist', SceneGrist)\n"]}
|
1
|
+
{"version":3,"file":"grist.js","sourceRoot":"","sources":["../src/grist.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport 'ses'\nimport '@operato/data-grist/ox-grist.js'\nimport '@operato/data-grist/ox-filters-form.js'\n\nimport { Component, ComponentNature, error, HTMLOverlayElement, Properties } from '@hatiolab/things-scene'\nimport { DataGrist, FetchResult } from '@operato/data-grist'\nimport { i18next as _i18next } from '@operato/i18n'\nimport { FetchOption } from '@operato/data-grist/dist/src/types'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'grist-mode',\n name: 'mode',\n property: {\n options: [\n {\n display: 'Grid',\n value: 'GRID'\n },\n {\n display: 'List',\n value: 'LIST'\n },\n {\n display: 'Card',\n value: 'CARD'\n },\n {\n display: 'Depends on device',\n value: 'DEVICE'\n }\n ]\n }\n },\n {\n type: 'textarea',\n label: 'config',\n name: 'config'\n },\n {\n type: 'checkbox',\n label: 'filterable',\n name: 'filterable'\n },\n {\n type: 'checkbox',\n label: 'appendable',\n name: 'appendable'\n },\n {\n type: 'checkbox',\n label: 'paginatable',\n name: 'paginatable'\n },\n {\n type: 'number',\n label: 'content-scale',\n name: 'contentScale',\n property: {\n step: 0.1,\n min: 0.1\n }\n },\n {\n type: 'select',\n label: 'bound-data',\n name: 'boundData',\n property: {\n options: [\n {\n display: '',\n value: ''\n },\n {\n display: 'Focused Row',\n value: 'focused-row'\n },\n {\n display: 'Selected Rows',\n value: 'selected-rows'\n }\n ]\n }\n }\n ],\n help: 'scene/component/grist'\n}\n\nconst isMobileDevice = () => false\n\nexport default class SceneGrist extends HTMLOverlayElement {\n public beforeFetchFuncs: any = {}\n\n private __value: any = {}\n private _listenTo?: any\n private _listener?: any\n\n public grist?: DataGrist\n\n get nature() {\n return NATURE\n }\n\n ready() {\n super.ready()\n\n if (this.rootModel) {\n this._listenTo = this.rootModel\n this._listener = function (this: SceneGrist, after: Properties) {\n after.scale && this.rescale()\n }.bind(this)\n this.rootModel.on('change', this._listener)\n }\n }\n\n removed() {\n if (this._listenTo) {\n this._listenTo.off('change', this._listener)\n\n delete this._listenTo\n delete this._listener\n }\n }\n\n createElement() {\n super.createElement()\n\n this.grist = document.createElement('ox-grist') as DataGrist\n this.element.appendChild(this.grist)\n\n this.rescale()\n\n const grist = this.grist\n\n this.setGristConfig(grist)\n\n grist.fetchHandler = async ({\n page,\n limit,\n sorters,\n sortings,\n filters,\n inherited,\n options\n }: FetchOption): Promise<FetchResult> => {\n Object.values(this.beforeFetchFuncs).forEach((func: any) =>\n func({ page, limit, sorters, sortings, filters, inherited, options })\n )\n var { total = 0, records = [] } = grist.data || {}\n\n return {\n page,\n limit,\n total,\n records\n }\n }\n\n grist.addEventListener('select-record-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('select-all-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('focus-change', (e: Event) => {\n if (this.state.boundData === 'focused-row') {\n this.data = ((e.target as DataGrist)?.data?.records || [])[(e as CustomEvent).detail.row]\n }\n })\n }\n\n get value() {\n return this.__value\n }\n\n set value(value) {\n this.__value = value\n if (!this.grist || typeof value !== 'object') return\n\n var { page, limit } = this.config.pagination || {}\n\n this.grist.data =\n value instanceof Array\n ? {\n page,\n limit,\n ...this.grist._data,\n total: value.length,\n records: Array.from(value)\n }\n : {\n page,\n limit,\n ...this.grist._data,\n ...value\n }\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if (\n 'mode' in after ||\n 'filterable' in after ||\n 'appendable' in after ||\n 'paginatable' in after ||\n 'config' in after\n ) {\n this.setGristConfig(this.grist)\n }\n\n this.rescale()\n }\n\n dispose() {\n super.dispose()\n\n delete this.grist\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(grist: DataGrist) {\n this.rescale()\n }\n\n setGristConfig(grist: DataGrist | undefined) {\n if (!grist) {\n return\n }\n\n var { mode, filterable } = this.state\n\n if (mode != 'DEVICE') {\n grist.mode = mode\n } else {\n grist.mode = isMobileDevice() ? 'LIST' : 'GRID'\n }\n\n grist.config = this.config\n\n grist.innerHTML = filterable\n ? `\n <div slot=\"headroom\">\n <div style=\"padding: 9px 9px 0px 9px;\">\n <ox-filters-form autofocus></ox-filters-form>\n </div>\n </div>\n `\n : ''\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n /*\n * grist는 부모의 스케일의 역으로 transform해서, scale을 1로 맞춘다.\n */\n rescale() {\n var grist = this.grist\n if (!grist) {\n return\n }\n\n const scale = this.getState('contentScale') || 1\n\n const sx = scale\n const sy = scale\n\n const transform = `scale(${sx}, ${sy})`\n\n ;['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach((prefix: string) => {\n grist!.style.setProperty(prefix + 'transform', transform)\n grist!.style.setProperty(prefix + 'transform-origin', '0px 0px')\n })\n\n const { width, height } = this.state\n grist.style.width = Math.round(width / scale) + 'px'\n grist.style.height = Math.round(height / scale) + 'px'\n }\n\n get config() {\n var { config, appendable, paginatable } = this.state\n\n if (typeof config !== 'object') {\n try {\n const c = new Compartment({\n t: _i18next.t,\n i18next: _i18next\n })\n\n config = c.evaluate(`(${config})`)\n } catch (e) {\n error(e)\n }\n }\n\n if (paginatable) {\n if (config.pagination && !config.pagination.limit && config.pagination.pages && config.pagination.pages.length) {\n config.pagination.limit = config.pagination.pages[0]\n }\n }\n\n config.pagination = {\n ...config.pagination,\n infinite: !paginatable\n }\n\n config.rows = {\n ...config.rows,\n appendable: !!appendable\n }\n\n return config\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('grist', SceneGrist)\n"]}
|
@@ -20,6 +20,21 @@ grist에 동작을 지시하는 컴포넌트이다.
|
|
20
20
|
sorters
|
21
21
|
}
|
22
22
|
```
|
23
|
+
- Get List Param
|
24
|
+
- ListParam 정보 가져오기
|
25
|
+
- graphql query resolver 에 직접 사용될 수 있는 입력 변수 형식으로 가공된 데이타로 제공됨
|
26
|
+
```
|
27
|
+
{
|
28
|
+
pagination: {
|
29
|
+
page,
|
30
|
+
limit
|
31
|
+
},
|
32
|
+
sortings,
|
33
|
+
filters,
|
34
|
+
inherited,
|
35
|
+
options
|
36
|
+
}
|
37
|
+
```
|
23
38
|
- Get all rows
|
24
39
|
- 모든 레코드 데이터 가져오기
|
25
40
|
- Get selected rows
|
@@ -10,13 +10,26 @@ When a user's mouse click (or tap) event occurs when connected to a specific Gri
|
|
10
10
|
- Set the ID of grist to connect to.
|
11
11
|
- action
|
12
12
|
- Get page information
|
13
|
-
-
|
13
|
+
- Retrieve pagination information from Grist
|
14
14
|
- Provided as processed data in the form of input variables that can be used directly in graphql query resolver
|
15
15
|
```js
|
16
16
|
{
|
17
|
-
page,
|
18
|
-
|
19
|
-
|
17
|
+
page, limit, sorters
|
18
|
+
}
|
19
|
+
```
|
20
|
+
- Get List Param
|
21
|
+
- Retrieve ListParam information from Grist
|
22
|
+
- Provided as processed data in the form of input variables that can be used directly in graphql query resolver
|
23
|
+
```
|
24
|
+
{
|
25
|
+
pagination: {
|
26
|
+
page,
|
27
|
+
limit
|
28
|
+
},
|
29
|
+
sortings,
|
30
|
+
filters,
|
31
|
+
inherited,
|
32
|
+
options
|
20
33
|
}
|
21
34
|
```
|
22
35
|
- Get all rows
|
@@ -25,8 +38,8 @@ When a user's mouse click (or tap) event occurs when connected to a specific Gri
|
|
25
38
|
- Get checked record data
|
26
39
|
```ts
|
27
40
|
{
|
28
|
-
patches
|
29
|
-
|
41
|
+
patches /* Processed data in patch data format that can be used directly in the graphql mutation resolver for multiple record updates. */,
|
42
|
+
original /* Checked record data */
|
30
43
|
}
|
31
44
|
```
|
32
45
|
- Get dirty rows
|
@@ -1,22 +1,35 @@
|
|
1
1
|
# grist action
|
2
2
|
|
3
|
-
当通过连接到特定的Grist组件而发生用户的Click(或Tap)Event时,获取grist数据或提供操作指示给grist。
|
3
|
+
当通过连接到特定的 Grist 组件而发生用户的 Click(或 Tap)Event 时,获取 grist 数据或提供操作指示给 grist。
|
4
4
|
|
5
|
-
其他功能与Rect(矩形)组件相同。
|
5
|
+
其他功能与 Rect(矩形)组件相同。
|
6
6
|
|
7
7
|
## Properties
|
8
8
|
|
9
9
|
- target grist
|
10
|
-
- 设置要连接的grist的ID。
|
10
|
+
- 设置要连接的 grist 的 ID。
|
11
11
|
- action
|
12
12
|
- Get page information
|
13
13
|
- 获取分页信息
|
14
|
-
- 提供可以在graphql query resolver上直接使用的已加工的数据
|
14
|
+
- 提供可以在 graphql query resolver 上直接使用的已加工的数据
|
15
15
|
```js
|
16
16
|
{
|
17
|
-
page,
|
18
|
-
|
19
|
-
|
17
|
+
page, limit, sorters
|
18
|
+
}
|
19
|
+
```
|
20
|
+
- Get List Param
|
21
|
+
- 获取 ListParam 信息
|
22
|
+
- 提供可以在 graphql query resolver 上直接使用的已加工的数据
|
23
|
+
```
|
24
|
+
{
|
25
|
+
pagination: {
|
26
|
+
page,
|
27
|
+
limit
|
28
|
+
},
|
29
|
+
sortings,
|
30
|
+
filters,
|
31
|
+
inherited,
|
32
|
+
options
|
20
33
|
}
|
21
34
|
```
|
22
35
|
- Get all rows
|
@@ -25,13 +38,12 @@
|
|
25
38
|
- 获取已选择的数据
|
26
39
|
```ts
|
27
40
|
{
|
28
|
-
patches
|
29
|
-
original /* 获取已选择的数据 */
|
41
|
+
patches /* 提供多行更新用的graphql mutation resolver上直接使用的已加工的数据*/, original /* 获取已选择的数据 */
|
30
42
|
}
|
31
43
|
```
|
32
44
|
- Get dirty rows
|
33
45
|
- 取得变更资料
|
34
|
-
- 提供多行更新用的graphql mutation resolver上直接使用的已加工的数据
|
46
|
+
- 提供多行更新用的 graphql mutation resolver 上直接使用的已加工的数据
|
35
47
|
- Add a row
|
36
48
|
- 添加行
|
37
49
|
- Delete selected rows
|
@@ -41,4 +53,4 @@
|
|
41
53
|
- run at startup
|
42
54
|
- 是否在画面打开时执行
|
43
55
|
- record adder format
|
44
|
-
- 添加新行时的Format
|
56
|
+
- 添加新行时的 Format
|
@@ -25,6 +25,8 @@ If you bind the following type of data to the value property of the grist compon
|
|
25
25
|
- config
|
26
26
|
- Configuration for grist
|
27
27
|
- It consists of column, header, record and pagination information.
|
28
|
+
- filterable
|
29
|
+
- Set whether to provide a UI feature to edit search conditions in the header area
|
28
30
|
- appendable
|
29
31
|
- Set whether to provide UI function so that new record can be added
|
30
32
|
- paginatable
|
@@ -17,22 +17,24 @@
|
|
17
17
|
|
18
18
|
## Properties
|
19
19
|
|
20
|
-
- 模式
|
20
|
+
- 模式 (grist mode)
|
21
21
|
- Grid: 数据网格格式,以表格格式组织多列
|
22
22
|
- List: 以项目块的形式组成多列信息的数据列表格式
|
23
23
|
- Card: 卡片式数据列表
|
24
24
|
- Depends on device : 根据当前设备自动选择数据网格或数据列表
|
25
|
-
- 配置
|
25
|
+
- 配置 (config)
|
26
26
|
- 用于 grist 的配置
|
27
27
|
- 包含表列、表头、数据、分页信息
|
28
|
-
-
|
28
|
+
- 可过滤 (filterable)
|
29
|
+
- 设置是否在标题区域提供编辑搜索条件的 UI 功能
|
30
|
+
- 可增加新行 (appendable)
|
29
31
|
- 设置是否提供 UI 功能,以便可以添加新记录
|
30
|
-
- 可分页
|
32
|
+
- 可分页 (paginatable)
|
31
33
|
- 设置是否提供在页脚区域中提供分页功能的页脚区域 UI 功能
|
32
34
|
- scale
|
33
35
|
- Set scale of grist content
|
34
36
|
- The minimum value is 0.1, and it can be increased by 0.1.
|
35
37
|
- Default value is 1
|
36
|
-
- 绑定数据
|
38
|
+
- 绑定数据 (bound data)
|
37
39
|
- focused row : 用户选择的或移动数据的属性将会传递出去,只传递一行数据
|
38
40
|
- selected rows : 用户选择的所有数据会将会传递出去,数据将会作为 Array 发送。
|