์ ๋ ฌ
๋ผ๋ฒจ ์ ๋ ฌ, ๊ฐ ๊ธฐ์ค ์ ๋ ฌ, fallback ์ ๋ ฌ ์ค์ ๋ฐฉ๋ฒ์ด๋ค.
ํยท์ด ์ฐจ์์ ํญ๋ชฉ ์์๋ ํ๋๋ณ ์ ๋ ฌ ์ต์ ๊ณผ ์ถ ์ ์ฒด์ ์ ์ฉ๋๋ fallback ์ ๋ ฌ ๊ท์น์ ํตํด ์ค์ ํ๋ค. ๊ฐ ํ๋์ ์ง๊ณ ๋ฐฉ์์ ์ง๊ณ ํจ์๋ฅผ, ํ๋ ๋ฐฐ์น๋ ํ๋ ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ๋ค.
ํ๋ ์ ๋ ฌ (์ค์ )
rows ยท columns ํญ๋ชฉ์ sort ์์ฑ์ IPivotFieldSort๋ฅผ ์ง์ ํ๋ค.
fields: {
rows: [
{ name: '์ฐจ์ข
', sort: { type: 'label', direction: 'asc' } },
{
name: '๋ธ๋๋๋ช
',
sort: {
type: 'value',
direction: 'desc',
measure: 'ํ๋งค์๋',
target: 'total',
},
},
],
columns: ['ํ๋งค๋ถ๊ธฐ'],
values: ['ํ๋งค์๋'],
}IPivotFieldSort
| ์์ฑ | ์ค๋ช |
|---|---|
type | 'label' | 'value' | 'custom' | 'callback' (๊ธฐ๋ณธ 'label') |
direction | 'asc' | 'desc' | 'none' (๊ธฐ๋ณธ 'asc') |
measure | value ์ ๋ ฌ ์ ๊ธฐ์ค ์ธก์ ๊ฐ ์ด๋ฆ ๋๋ ์ธ๋ฑ์ค |
target | value ์ ๋ ฌ ์ ๋ฐ๋ ์ถ ์์น. string[](๋ผ๋ฒจ ๊ฒฝ๋ก) ๋๋ 'total'. ์๋ต ์ Grand Total |
values | custom ์ ๋ ฌ ์ ํญ๋ชฉ ์์ ๋ฐฐ์ด |
compareFn | callback ์ ๋ ฌ ์ ๋น๊ต ํจ์ |
type | ๋์ |
|---|---|
label | ํญ๋ชฉ ๋ผ๋ฒจ ๊ธฐ์ค |
value | ๋ฐ๋ ์ถ์ ํน์ ์ ยท๊ทธ๋ฃน ์๊ณยท์ด๊ณ ๊ฐ ๊ธฐ์ค |
custom | values ๋ฐฐ์ด์ ์ ์๋ ์ฌ์ฉ์ ์ง์ ์์ |
callback | compareFn(a, b, params) ๊ฒฐ๊ณผ |
compareFn์ params์๋ ์ฐจ์ ์ธ๋ฑ์ค(dimensionIndex), ๋น๊ต ๋์ ๋ผ๋ฒจ(labelsA / labelsB), ์ธก์ ๊ฐ๋ณ ํฉ๊ณ(subtotalsA / subtotalsB), ์ถ(axis) ์ ๋ณด๊ฐ ์ ๋ฌ๋๋ค.
๊ฐ ๊ธฐ์ค ์ ๋ ฌ ์:
// Grand Total์ ํ๋งค์๋ ๊ธฐ์ค
{ type: 'value', direction: 'desc', measure: 'ํ๋งค์๋', target: 'total' }
// ํน์ ์ด ๊ทธ๋ฃน(์: Q1) ๊ฐ ๊ธฐ์ค
{ type: 'value', direction: 'asc', measure: 'ํ๋งค์๋', target: ['Q1'] }์ฌ์ฉ์ ์ ์ ์์ ์:
{
type: 'custom',
values: ['์ํ', '์คํ', '๋ํ'],
}Fallback ์ ๋ ฌ
์ฐจ์์ setFieldSort๋ก ๋ช
์ ์ ๋ ฌ์ด ์์ ๋ ์ถ ์ ์ฒด์ ์ ์ฉ๋๋ ๊ธฐ๋ณธ ๊ท์น์ด๋ค.
ํญ์ ๊ฐ(value) ๊ธฐ์ค์ผ๋ก ๋์ํ๋ฉฐ, IFallbackFieldSort ํํ์ด๋ค.
| ์์ฑ | ์ค๋ช |
|---|---|
direction | 'asc' | 'desc' | 'none' |
measure | ๊ธฐ์ค ์ธก์ ๊ฐ ํ๋๋ช |
target | ๋ฐ๋ ์ถ ์์น (string[] | 'total') |
scope | 'unset'(๊ธฐ๋ณธ) โ ๋ช
์ ์ ๋ ฌ์ด ์๋ ์ฐจ์๋ง. 'all' โ ๋ช
์ direction์ด 'none'์ธ ์ฐจ์์๋ ์ ์ฉ |
๋ช
์ ์ ๋ ฌ์ด ์๋ ์ฐจ์์ fallback์ ๋ฌด์ํ๋ค. (scope: 'all'์ด๊ณ ๋ช
์ ๋ฐฉํฅ์ด 'none'์ธ ๊ฒฝ์ฐ๋ ์์ธ)
์ธก์ ๊ฐ ํค๋๋ฅผ ํด๋ฆญํ์ฌ fallback ์ ๋ ฌ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ํยท์ด ํค๋์ measureClickAction์ด 'sort' ๋๋ 'selectAndSort'์ผ ๋ ๋์ํ๋ค.
tables: {
name: 'sales',
cube: 'sales',
rowHeader: {
measureClickAction: 'selectAndSort',
fallbackSortScope: 'unset',
},
fields: { /* ... */ },
}measureClickAction | ์ค๋ช |
|---|---|
'none' | ํด๋ฆญ ๋์ ์์ |
'select' | ์ ํ๋ง (๊ธฐ๋ณธ) |
'sort' | fallback ์ ๋ ฌ ํ ๊ธ (asc โ desc โ none) |
'selectAndSort' | ์ ํ๊ณผ ์ ๋ ฌ |
์์ธํ ํค๋ ์ต์
์ PivotHeaderOptions๋ฅผ ์ฐธ๊ณ ํ๋ค.
ํ๋ฉด์์ ๋ฐ๊พธ๊ธฐ
- ์ฐจ์ ํ๋ยทํค๋ ๋ฉ๋ด โ ์ค๋ฆ์ฐจ์ยท๋ด๋ฆผ์ฐจ์(๋ผ๋ฒจ), ๊ฐ ๊ธฐ์ค ์ ๋ ฌ, ์ ๋ ฌ ํด์
- ๋ณธ๋ฌธยทํค๋ ๋ฉ๋ด โ ์ด ๊ฐ ๊ธฐ์ค ํ ์ ๋ ฌ, ํ ๊ฐ ๊ธฐ์ค ์ด ์ ๋ ฌ
- ์ธก์ ๊ฐ ํค๋ ํด๋ฆญ โ
measureClickAction์ ๋ฐ๋ผ fallback ์ ๋ ฌ ์ํ - ์ธก์ ๊ฐ ๋ฉ๋ด โ ๊ธฐ๋ณธ ๊ฐ ์ ๋ ฌ(fallback) ์ค์ ยทํด์
API๋ก ๋ฐ๊พธ๊ธฐ
๋ฐํ์ ์ ๋ ฌ์ control.table์ setFieldSort๋ฅผ ์ฌ์ฉํ๋ค. Book ํ์ด์ง์์๋ Undo๊ฐ ํฌํจ๋๋ค.
const table = control.table;
// ๋ผ๋ฒจ ์ค๋ฆ์ฐจ์
table.setFieldSort('์ฐจ์ข
', { type: 'label', direction: 'asc' });
// ์ด๊ณ ๊ฐ ๊ธฐ์ค
table.setFieldSort('๋ธ๋๋๋ช
', {
type: 'value',
direction: 'desc',
measure: 'ํ๋งค์๋',
target: 'total',
});
// ์ ๋ ฌ ํด์
table.setFieldSort('์ฐจ์ข
', null);
table.getFieldSort('์ฐจ์ข
');
table.clearAllSorts();Fallback ์ ๋ ฌ:
table.setFallbackSort('row', ['ํ๋งค์๋'], 'desc');
table.getFallbackSort('row');์ค์ ๋ก๋ ์์ ์ fields.rows[].sort ์์ฑ์ ํ
์ด๋ธ์ด ์์ฑ๋ ๋ ๋ฐ์๋๋ค.
๋ฐํ์ ์คํ ์ค์๋ updateOption('sort', โฆ) ๋์ setFieldSort API ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.