@operato/scene-grist 1.3.14 → 2.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -2
- package/dist/grist-action.d.ts +12 -1
- package/dist/grist-action.js +39 -1
- package/dist/grist-action.js.map +1 -1
- package/dist/grist.d.ts +2 -1
- package/dist/grist.js +28 -6
- 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 +5 -5
- package/schema.graphql +3976 -0
- package/src/grist-action.ts +53 -2
- package/src/grist.ts +42 -7
- package/translations/en.json +4 -2
- package/translations/ja.json +15 -0
- package/translations/ko.json +4 -2
- package/translations/ms.json +13 -11
- package/translations/zh.json +9 -7
- package/tsconfig.tsbuildinfo +1 -1
package/src/grist-action.ts
CHANGED
|
@@ -17,7 +17,8 @@ export enum ACTIONS {
|
|
|
17
17
|
GET_DIRTY = 'getDirtyRows',
|
|
18
18
|
ADD_ROW = 'addRow',
|
|
19
19
|
DELETE_SELECTED_ROWS = 'deleteSelectedRowsSoftly',
|
|
20
|
-
GET_PAGE_INFO = 'getPageInfo'
|
|
20
|
+
GET_PAGE_INFO = 'getPageInfo',
|
|
21
|
+
GET_LIST_PARAM = 'getListParam'
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
const NATURE: ComponentNature = {
|
|
@@ -46,6 +47,11 @@ const NATURE: ComponentNature = {
|
|
|
46
47
|
display: 'Get page information',
|
|
47
48
|
value: ACTIONS.GET_PAGE_INFO
|
|
48
49
|
},
|
|
50
|
+
{
|
|
51
|
+
// 페이지네이션 정보 가져오기
|
|
52
|
+
display: 'Get ListParam',
|
|
53
|
+
value: ACTIONS.GET_LIST_PARAM
|
|
54
|
+
},
|
|
49
55
|
{
|
|
50
56
|
// 모든 레코드 데이터 가져오기
|
|
51
57
|
display: 'Get all rows',
|
|
@@ -141,6 +147,16 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
|
141
147
|
this.data = this.getPageInfoFrom(null, fetchedData)
|
|
142
148
|
this.doDataMap()
|
|
143
149
|
}
|
|
150
|
+
} else if (after.action == ACTIONS.GET_LIST_PARAM) {
|
|
151
|
+
gristComponent.beforeFetchFuncs[refid] = (fetchedData: {
|
|
152
|
+
page: number
|
|
153
|
+
limit: number
|
|
154
|
+
total: number
|
|
155
|
+
records: GristRecord[]
|
|
156
|
+
}) => {
|
|
157
|
+
this.data = this.getListParamFrom(null, fetchedData)
|
|
158
|
+
this.doDataMap()
|
|
159
|
+
}
|
|
144
160
|
} else {
|
|
145
161
|
delete gristComponent.beforeFetchFuncs[refid]
|
|
146
162
|
}
|
|
@@ -223,6 +239,9 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
|
223
239
|
case ACTIONS.GET_PAGE_INFO:
|
|
224
240
|
data = this.getPageInfoFrom(grist)
|
|
225
241
|
break
|
|
242
|
+
case ACTIONS.GET_LIST_PARAM:
|
|
243
|
+
data = this.getListParamFrom(grist)
|
|
244
|
+
break
|
|
226
245
|
}
|
|
227
246
|
|
|
228
247
|
// 이 컴포넌트의 data 값이 바뀌는 동작은 데이터 매핑까지 실행함
|
|
@@ -292,6 +311,38 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
|
292
311
|
}
|
|
293
312
|
}
|
|
294
313
|
|
|
314
|
+
// Grist로부터 ListParam 정보를 가져옴
|
|
315
|
+
getListParamFrom(grist: DataGrist | null, fetchedData?: GristData) {
|
|
316
|
+
var {
|
|
317
|
+
page = 1,
|
|
318
|
+
limit = 20,
|
|
319
|
+
sorters,
|
|
320
|
+
sortings,
|
|
321
|
+
filters = [],
|
|
322
|
+
inherited,
|
|
323
|
+
options
|
|
324
|
+
// @ts-ignore
|
|
325
|
+
} = fetchedData || (grist && grist.dataProvider) || pagination(grist!)
|
|
326
|
+
|
|
327
|
+
return {
|
|
328
|
+
pagination: { page, limit },
|
|
329
|
+
sortings: sorters || sortings,
|
|
330
|
+
filters,
|
|
331
|
+
inherited,
|
|
332
|
+
options
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function pagination(grist: DataGrist) {
|
|
336
|
+
var config = grist && grist.config && grist.config.pagination
|
|
337
|
+
if (config)
|
|
338
|
+
return {
|
|
339
|
+
page: config.page,
|
|
340
|
+
limit: config.limit || (config.pages && config.pages[0])
|
|
341
|
+
}
|
|
342
|
+
else return {}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
295
346
|
// 레코드들을 서버 공통 resolver에 맞는 포맷으로 만듦
|
|
296
347
|
buildPatches(patches: GristRecord[]): GristRecord[] {
|
|
297
348
|
return patches.map(patch => {
|
|
@@ -345,7 +396,7 @@ export default class GristAction extends ValueHolder(RectPath(Component)) {
|
|
|
345
396
|
|
|
346
397
|
get targetGristComponent(): SceneGrist {
|
|
347
398
|
var { target } = this.state
|
|
348
|
-
return this.root.findById(target) as SceneGrist
|
|
399
|
+
return target && (this.root.findById(target) as SceneGrist)
|
|
349
400
|
}
|
|
350
401
|
|
|
351
402
|
get targetGristElement(): DataGrist | undefined {
|
package/src/grist.ts
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import '@operato/data-grist'
|
|
5
|
+
import '@operato/data-grist/ox-grist.js'
|
|
6
|
+
import '@operato/data-grist/ox-filters-form.js'
|
|
6
7
|
|
|
7
8
|
import { Component, ComponentNature, error, HTMLOverlayElement, Properties } from '@hatiolab/things-scene'
|
|
8
9
|
import { DataGrist, FetchResult } from '@operato/data-grist'
|
|
10
|
+
import { i18next as _i18next } from '@operato/i18n'
|
|
9
11
|
import { FetchOption } from '@operato/data-grist/dist/src/types'
|
|
10
12
|
|
|
11
13
|
const NATURE: ComponentNature = {
|
|
@@ -43,6 +45,11 @@ const NATURE: ComponentNature = {
|
|
|
43
45
|
label: 'config',
|
|
44
46
|
name: 'config'
|
|
45
47
|
},
|
|
48
|
+
{
|
|
49
|
+
type: 'checkbox',
|
|
50
|
+
label: 'filterable',
|
|
51
|
+
name: 'filterable'
|
|
52
|
+
},
|
|
46
53
|
{
|
|
47
54
|
type: 'checkbox',
|
|
48
55
|
label: 'appendable',
|
|
@@ -127,8 +134,6 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
127
134
|
super.createElement()
|
|
128
135
|
|
|
129
136
|
this.grist = document.createElement('ox-grist') as DataGrist
|
|
130
|
-
this.grist.style.setProperty('--grist-padding', '0')
|
|
131
|
-
|
|
132
137
|
this.element.appendChild(this.grist)
|
|
133
138
|
|
|
134
139
|
this.rescale()
|
|
@@ -137,8 +142,18 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
137
142
|
|
|
138
143
|
this.setGristConfig(grist)
|
|
139
144
|
|
|
140
|
-
grist.fetchHandler = async ({
|
|
141
|
-
|
|
145
|
+
grist.fetchHandler = async ({
|
|
146
|
+
page,
|
|
147
|
+
limit,
|
|
148
|
+
sorters,
|
|
149
|
+
sortings,
|
|
150
|
+
filters,
|
|
151
|
+
inherited,
|
|
152
|
+
options
|
|
153
|
+
}: FetchOption): Promise<FetchResult> => {
|
|
154
|
+
Object.values(this.beforeFetchFuncs).forEach((func: any) =>
|
|
155
|
+
func({ page, limit, sorters, sortings, filters, inherited, options })
|
|
156
|
+
)
|
|
142
157
|
var { total = 0, records = [] } = grist.data || {}
|
|
143
158
|
|
|
144
159
|
return {
|
|
@@ -198,7 +213,13 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
198
213
|
onchange(after: Properties, before: Properties) {
|
|
199
214
|
super.onchange(after, before)
|
|
200
215
|
|
|
201
|
-
if (
|
|
216
|
+
if (
|
|
217
|
+
'mode' in after ||
|
|
218
|
+
'filterable' in after ||
|
|
219
|
+
'appendable' in after ||
|
|
220
|
+
'paginatable' in after ||
|
|
221
|
+
'config' in after
|
|
222
|
+
) {
|
|
202
223
|
this.setGristConfig(this.grist)
|
|
203
224
|
}
|
|
204
225
|
|
|
@@ -226,7 +247,7 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
226
247
|
return
|
|
227
248
|
}
|
|
228
249
|
|
|
229
|
-
var { mode } = this.state
|
|
250
|
+
var { mode, filterable } = this.state
|
|
230
251
|
|
|
231
252
|
if (mode != 'DEVICE') {
|
|
232
253
|
grist.mode = mode
|
|
@@ -235,6 +256,16 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
235
256
|
}
|
|
236
257
|
|
|
237
258
|
grist.config = this.config
|
|
259
|
+
|
|
260
|
+
grist.innerHTML = filterable
|
|
261
|
+
? `
|
|
262
|
+
<div slot="headroom">
|
|
263
|
+
<div style="padding: 9px 9px 0px 9px;">
|
|
264
|
+
<ox-filters-form autofocus></ox-filters-form>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
`
|
|
268
|
+
: ''
|
|
238
269
|
}
|
|
239
270
|
|
|
240
271
|
/*
|
|
@@ -276,6 +307,10 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
|
276
307
|
|
|
277
308
|
if (typeof config !== 'object') {
|
|
278
309
|
try {
|
|
310
|
+
var i18next = _i18next
|
|
311
|
+
//@ts-ignore 이 함수는 script에서 사용하기 위해서 스코프내에서 정의한 것임. 사용되지 않는다는 이유로 삭제하면 안됨.
|
|
312
|
+
var t = i18next.t
|
|
313
|
+
|
|
279
314
|
config = eval(`(${config})`)
|
|
280
315
|
} catch (e) {
|
|
281
316
|
error(e)
|
package/translations/en.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"component.grist": "data grid",
|
|
3
|
+
"component.grist-action": "data grid action",
|
|
3
4
|
"label.grist-mode": "mode",
|
|
4
|
-
"label.target-grist": "target
|
|
5
|
+
"label.target-grist": "target data grid",
|
|
5
6
|
"label.config": "config",
|
|
6
7
|
"label.action": "action",
|
|
7
8
|
"label.content-scale": "content scale",
|
|
8
9
|
"label.run-at-startup": "run at startup",
|
|
9
10
|
"label.record-adder-format": "default when adding row",
|
|
10
11
|
"label.appendable": "appendable",
|
|
12
|
+
"label.filterable": "filterable",
|
|
11
13
|
"label.paginatable": "paginatable",
|
|
12
14
|
"label.bound-data": "bound data"
|
|
13
15
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"component.grist": "データグリッド",
|
|
3
|
+
"component.grist-action": "データグリッドアクション",
|
|
4
|
+
"label.grist-mode": "モード",
|
|
5
|
+
"label.target-grist": "対象データグリッド",
|
|
6
|
+
"label.config": "設定",
|
|
7
|
+
"label.action": "アクション",
|
|
8
|
+
"label.content-scale": "コンテンツスケール",
|
|
9
|
+
"label.run-at-startup": "起動時に実行",
|
|
10
|
+
"label.record-adder-format": "行追加時のデフォルト",
|
|
11
|
+
"label.appendable": "追加可能",
|
|
12
|
+
"label.filterable": "フィルタ可能",
|
|
13
|
+
"label.paginatable": "ページング可能",
|
|
14
|
+
"label.bound-data": "バインドデータ"
|
|
15
|
+
}
|
package/translations/ko.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"component.grist": "데이타 그리드",
|
|
3
|
+
"component.grist-action": "데이타 그리드 조작",
|
|
3
4
|
"label.grist-mode": "형태",
|
|
4
|
-
"label.target-grist": "대상
|
|
5
|
+
"label.target-grist": "대상 데이타 그리드",
|
|
5
6
|
"label.config": "설정",
|
|
6
7
|
"label.action": "동작",
|
|
7
8
|
"label.content-scale": "내부 스케일",
|
|
8
9
|
"label.run-at-startup": "시작 시 실행",
|
|
9
10
|
"label.record-adder-format": "행 추가 시 초기값",
|
|
10
11
|
"label.appendable": "행추가 가능",
|
|
12
|
+
"label.filterable": "필터 가능",
|
|
11
13
|
"label.paginatable": "페이지네이션",
|
|
12
14
|
"label.bound-data": "연결 데이타"
|
|
13
15
|
}
|
package/translations/ms.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"label.
|
|
5
|
-
"label.
|
|
6
|
-
"label.
|
|
7
|
-
"label.
|
|
8
|
-
"label.
|
|
9
|
-
"label.
|
|
10
|
-
"label.
|
|
11
|
-
"label.
|
|
12
|
-
"label.
|
|
2
|
+
"component.grist": "Grid Data",
|
|
3
|
+
"component.grist-action": "Aksi Grid Data",
|
|
4
|
+
"label.grist-mode": "Mod",
|
|
5
|
+
"label.target-grist": "Grid Data Sasaran",
|
|
6
|
+
"label.config": "Konfigurasi",
|
|
7
|
+
"label.action": "Tindakan",
|
|
8
|
+
"label.content-scale": "Skala Kandungan",
|
|
9
|
+
"label.run-at-startup": "Jalankan ketika memulakan",
|
|
10
|
+
"label.record-adder-format": "Default ketika menambah baris",
|
|
11
|
+
"label.appendable": "Boleh ditambah",
|
|
12
|
+
"label.filterable": "boleh ditapis",
|
|
13
|
+
"label.paginatable": "Boleh dipaginasi",
|
|
14
|
+
"label.bound-data": "Data Terikat"
|
|
13
15
|
}
|
package/translations/zh.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"component.grist": "数据网格",
|
|
3
|
+
"component.grist-action": "数据网格操作",
|
|
3
4
|
"label.grist-mode": "模式",
|
|
4
|
-
"label.target-grist": "
|
|
5
|
+
"label.target-grist": "目标数据网格",
|
|
5
6
|
"label.config": "配置",
|
|
6
|
-
"label.action": "
|
|
7
|
-
"label.content-scale": "
|
|
8
|
-
"label.run-at-startup": "
|
|
9
|
-
"label.record-adder-format": "
|
|
10
|
-
"label.appendable": "
|
|
7
|
+
"label.action": "操作",
|
|
8
|
+
"label.content-scale": "内容缩放",
|
|
9
|
+
"label.run-at-startup": "启动时运行",
|
|
10
|
+
"label.record-adder-format": "添加行时的默认值",
|
|
11
|
+
"label.appendable": "可追加",
|
|
12
|
+
"label.filterable": "可过滤",
|
|
11
13
|
"label.paginatable": "可分页",
|
|
12
14
|
"label.bound-data": "绑定数据"
|
|
13
15
|
}
|