๊ฐ€์ด๋“œ
์ •๋ ฌ

์ •๋ ฌ

๋ผ๋ฒจ ์ •๋ ฌ, ๊ฐ’ ๊ธฐ์ค€ ์ •๋ ฌ, 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')
measurevalue ์ •๋ ฌ ์‹œ ๊ธฐ์ค€ ์ธก์ •๊ฐ’ ์ด๋ฆ„ ๋˜๋Š” ์ธ๋ฑ์Šค
targetvalue ์ •๋ ฌ ์‹œ ๋ฐ˜๋Œ€ ์ถ• ์œ„์น˜. string[](๋ผ๋ฒจ ๊ฒฝ๋กœ) ๋˜๋Š” 'total'. ์ƒ๋žต ์‹œ Grand Total
valuescustom ์ •๋ ฌ ์‹œ ํ•ญ๋ชฉ ์ˆœ์„œ ๋ฐฐ์—ด
compareFncallback ์ •๋ ฌ ์‹œ ๋น„๊ต ํ•จ์ˆ˜
type๋™์ž‘
labelํ•ญ๋ชฉ ๋ผ๋ฒจ ๊ธฐ์ค€
value๋ฐ˜๋Œ€ ์ถ•์˜ ํŠน์ • ์…€ยท๊ทธ๋ฃน ์†Œ๊ณ„ยท์ด๊ณ„ ๊ฐ’ ๊ธฐ์ค€
customvalues ๋ฐฐ์—ด์— ์ •์˜๋œ ์‚ฌ์šฉ์ž ์ง€์ • ์ˆœ์„œ
callbackcompareFn(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 ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.

See Also