@operato/scene-grist 2.0.0-alpha.4 → 2.0.0-alpha.9
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +19 -0
- 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 +24 -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 +4 -4
- package/schema.graphql +3976 -0
- package/src/grist-action.ts +53 -2
- package/src/grist.ts +37 -7
- package/translations/en.json +4 -4
- package/translations/ja.json +13 -13
- package/translations/ko.json +4 -4
- package/translations/ms.json +13 -13
- package/translations/zh.json +9 -9
- 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,7 +2,8 @@
|
|
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'
|
@@ -43,6 +44,11 @@ const NATURE: ComponentNature = {
|
|
43
44
|
label: 'config',
|
44
45
|
name: 'config'
|
45
46
|
},
|
47
|
+
{
|
48
|
+
type: 'checkbox',
|
49
|
+
label: 'filterable',
|
50
|
+
name: 'filterable'
|
51
|
+
},
|
46
52
|
{
|
47
53
|
type: 'checkbox',
|
48
54
|
label: 'appendable',
|
@@ -127,8 +133,6 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
127
133
|
super.createElement()
|
128
134
|
|
129
135
|
this.grist = document.createElement('ox-grist') as DataGrist
|
130
|
-
this.grist.style.setProperty('--grist-padding', '0')
|
131
|
-
|
132
136
|
this.element.appendChild(this.grist)
|
133
137
|
|
134
138
|
this.rescale()
|
@@ -137,8 +141,18 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
137
141
|
|
138
142
|
this.setGristConfig(grist)
|
139
143
|
|
140
|
-
grist.fetchHandler = async ({
|
141
|
-
|
144
|
+
grist.fetchHandler = async ({
|
145
|
+
page,
|
146
|
+
limit,
|
147
|
+
sorters,
|
148
|
+
sortings,
|
149
|
+
filters,
|
150
|
+
inherited,
|
151
|
+
options
|
152
|
+
}: FetchOption): Promise<FetchResult> => {
|
153
|
+
Object.values(this.beforeFetchFuncs).forEach((func: any) =>
|
154
|
+
func({ page, limit, sorters, sortings, filters, inherited, options })
|
155
|
+
)
|
142
156
|
var { total = 0, records = [] } = grist.data || {}
|
143
157
|
|
144
158
|
return {
|
@@ -198,7 +212,13 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
198
212
|
onchange(after: Properties, before: Properties) {
|
199
213
|
super.onchange(after, before)
|
200
214
|
|
201
|
-
if (
|
215
|
+
if (
|
216
|
+
'mode' in after ||
|
217
|
+
'filterable' in after ||
|
218
|
+
'appendable' in after ||
|
219
|
+
'paginatable' in after ||
|
220
|
+
'config' in after
|
221
|
+
) {
|
202
222
|
this.setGristConfig(this.grist)
|
203
223
|
}
|
204
224
|
|
@@ -226,7 +246,7 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
226
246
|
return
|
227
247
|
}
|
228
248
|
|
229
|
-
var { mode } = this.state
|
249
|
+
var { mode, filterable } = this.state
|
230
250
|
|
231
251
|
if (mode != 'DEVICE') {
|
232
252
|
grist.mode = mode
|
@@ -235,6 +255,16 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
235
255
|
}
|
236
256
|
|
237
257
|
grist.config = this.config
|
258
|
+
|
259
|
+
grist.innerHTML = filterable
|
260
|
+
? `
|
261
|
+
<div slot="headroom">
|
262
|
+
<div style="padding: 9px 9px 0px 9px;">
|
263
|
+
<ox-filters-form autofocus></ox-filters-form>
|
264
|
+
</div>
|
265
|
+
</div>
|
266
|
+
`
|
267
|
+
: ''
|
238
268
|
}
|
239
269
|
|
240
270
|
/*
|
package/translations/en.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"keyword": "keyword",
|
2
|
+
"component.grist": "data grid",
|
3
|
+
"component.grist-action": "data grid action",
|
5
4
|
"label.grist-mode": "mode",
|
6
|
-
"label.target-grist": "target
|
5
|
+
"label.target-grist": "target data grid",
|
7
6
|
"label.config": "config",
|
8
7
|
"label.action": "action",
|
9
8
|
"label.content-scale": "content scale",
|
10
9
|
"label.run-at-startup": "run at startup",
|
11
10
|
"label.record-adder-format": "default when adding row",
|
12
11
|
"label.appendable": "appendable",
|
12
|
+
"label.filterable": "filterable",
|
13
13
|
"label.paginatable": "paginatable",
|
14
14
|
"label.bound-data": "bound data"
|
15
15
|
}
|
package/translations/ja.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"
|
5
|
-
"label.grist
|
6
|
-
"label.
|
7
|
-
"label.
|
8
|
-
"label.
|
9
|
-
"label.
|
10
|
-
"label.
|
11
|
-
"label.
|
12
|
-
"label.
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "
|
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
15
|
}
|
package/translations/ko.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"keyword": "키워드",
|
2
|
+
"component.grist": "데이타 그리드",
|
3
|
+
"component.grist-action": "데이타 그리드 조작",
|
5
4
|
"label.grist-mode": "형태",
|
6
|
-
"label.target-grist": "대상
|
5
|
+
"label.target-grist": "대상 데이타 그리드",
|
7
6
|
"label.config": "설정",
|
8
7
|
"label.action": "동작",
|
9
8
|
"label.content-scale": "내부 스케일",
|
10
9
|
"label.run-at-startup": "시작 시 실행",
|
11
10
|
"label.record-adder-format": "행 추가 시 초기값",
|
12
11
|
"label.appendable": "행추가 가능",
|
12
|
+
"label.filterable": "필터 가능",
|
13
13
|
"label.paginatable": "페이지네이션",
|
14
14
|
"label.bound-data": "연결 데이타"
|
15
15
|
}
|
package/translations/ms.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"
|
5
|
-
"label.grist
|
6
|
-
"label.
|
7
|
-
"label.
|
8
|
-
"label.
|
9
|
-
"label.
|
10
|
-
"label.
|
11
|
-
"label.
|
12
|
-
"label.
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "
|
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"
|
15
15
|
}
|
package/translations/zh.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"keyword": "关键词",
|
2
|
+
"component.grist": "数据网格",
|
3
|
+
"component.grist-action": "数据网格操作",
|
5
4
|
"label.grist-mode": "模式",
|
6
|
-
"label.target-grist": "
|
5
|
+
"label.target-grist": "目标数据网格",
|
7
6
|
"label.config": "配置",
|
8
|
-
"label.action": "
|
9
|
-
"label.content-scale": "
|
10
|
-
"label.run-at-startup": "
|
11
|
-
"label.record-adder-format": "
|
12
|
-
"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": "可过滤",
|
13
13
|
"label.paginatable": "可分页",
|
14
14
|
"label.bound-data": "绑定数据"
|
15
15
|
}
|