API
RealPivot2 API

RealPivot2 API ๊ฐœ์š”

RealPivot2๋Š” ์ฒ˜์Œ ํ™”๋ฉด์— ํ‘œ์‹œ๋  ํ”ผ๋ฒ—์˜ ๊ตฌ์„ฑ ์„ค์ •์„ ๋ชจ๋‘ ์ค€๋น„ํ•œ ๋’ค ์ปจํŠธ๋กค์„ ์ƒ์„ฑํ•œ๋‹ค.
๋ฐ์ดํ„ฐ๋Š” Cube๋กœ ๋‘๊ณ , ๋ถยทํ…Œ์ด๋ธ”ยทํ•„๋“œ ๋ฐฐ์น˜ ๋“ฑ UI ๊ตฌ์„ฑ์€ PivotBookConfiguration JSON ๊ฐ์ฒด ํ•˜๋‚˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.

const config = {
  general: { theme: 'light' },
  inspector: true,
  tables: {
    name: 'sales',
    cube: 'sales',
    title: '๋งค์ถœ ๋ถ„์„',
    fields: {
      filters: ['๊ตญ๊ฐ€'],
      rows: ['์ฐจ์ข…', '๋ธŒ๋žœ๋“œ๋ช…'],
      columns: ['ํŒ๋งค๋ถ„๊ธฐ', 'ํŒ๋งค์›”'],
      values: ['ํŒ๋งค์ˆ˜๋Ÿ‰', '์ฐจ๋Ÿ‰๊ฐ€๊ฒฉ'],
    },
  },
  // ...
};
 
const control = createControl(document, 'container', cubeManager, config);

๋งŽ์€ ๊ฒฝ์šฐ ํ”ผ๋ฒ—์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•„๋“œ ๋ฐฐ์น˜๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์˜ค๋ฒ„๋ ˆ์ดยท์†Œ๊ณ„ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ํ† ๊ธ€ํ•˜๋Š” ๋“ฑ ์‹คํ–‰ ์ค‘ ์ƒํƒœ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. RealPivot2๋Š” ๊ทธ ์ƒํƒœ๋ฅผ ์ฝ๊ณ  ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

API๋Š” ํ”ผ๋ฒ— ๊ตฌ์„ฑ ์š”์†Œ ๋ชจ๋ธ๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ตœ์ƒ์œ„ PivotControl์—์„œ BookยทTableยทField ๋“ฑ ๋ชจ๋ธ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ ๋ชจ๋ธ๋“ค์€ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ธ PivotItem์„ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ๊ณ„์Šนํ•˜๋ฉฐ, PivotItem์— ์‹คํ–‰ ์‹œ๊ฐ„ ์„ค์ • ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

const book = control.book;       // ํ”ผ๋ฒ— ๋ถ
const table = control.table;     // ํ˜„์žฌ ํ™œ์„ฑ ํ…Œ์ด๋ธ”(ํŽ˜์ด์ง€)
const fields = table.fields;     // ํ•„๋“œ ๋งค๋‹ˆ์ €

์ƒ์œ„ ๋ชจ๋ธ์€ ํ•˜์œ„ ์š”์†Œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

const valueField = fields.getValueField('ํŒ๋งค์ˆ˜๋Ÿ‰');
const dataBar = valueField.dataBar;   // ๊ฐ’ ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฐ” ์˜ค๋ฒ„๋ ˆ์ด ๋ชจ๋ธ

๊ฐ ๋ชจ๋ธ์€ ์„ค์ • ์˜ต์…˜์œผ๋กœ ๋™์ž‘๊ณผ ํ‘œ์‹œ ๋ฐฉ์‹์„ ์ •ํ•œ๋‹ค. ์˜ต์…˜์„ ์ฝ์„ ๋•Œ๋Š” options๋ฅผ ์ง์ ‘ ๋ณด์ง€ ๋ง๊ณ  prop()์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐ”๊ฟ€ ๋•Œ๋Š” updateOption / updateOptions๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

console.log(valueField.prop('aggregate'));  // ์ง‘๊ณ„ ๋ฐฉ์‹ ์กฐํšŒ
 
valueField.updateOption('aggregate', 'avg');  // ๋‹จ์ผ ์†์„ฑ ๋ณ€๊ฒฝ
 
// ์—ฌ๋Ÿฌ ์†์„ฑ์„ ํ•œ๊บผ๋ฒˆ์— ์„ค์ •
valueField.updateOptions({
  aggregate: 'sum',
  label: 'ํŒ๋งค ์ˆ˜๋Ÿ‰',
});

๊ฐ์ฒดํ˜• ์˜ต์…˜์€ ๋‚ด๋ถ€ ์†์„ฑ๋งŒ ๋ฐ”๊ฟ”์„œ๋Š” ํ™”๋ฉด์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋“œ์‹œ updateOption / updateOptions๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค. Undo๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ชจ๋ธ์— ์ง์ ‘ ์“ฐ๊ธฐ๋ณด๋‹ค Book API๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

// Undo ์Šคํƒ์— ๋‚จ๊ธฐ๋ ค๋ฉด book ๊ฒฝ์œ 
book.updateItem(valueField.dataBar, { visible: true });
book.updateProp(valueField, 'aggregate', 'sum');

๋ชจ๋ธ์˜ ๋‚ด๋ถ€ ์˜ต์…˜ ์ €์žฅ์†Œ๋Š” ์‹คํ–‰ ์ค‘ ์–ธ์ œ๋“  ์ƒˆ๋กœ์šด ์ƒํƒœ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, options ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์— ๋ณด๊ด€ํ•ด ๋‘๊ณ  ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

์„ค์ • ํŠธ๋ฆฌ ์„ค๋ช…์€ Config ๊ฐœ์š”๋ฅผ, ํƒ€์ž…ยท์†์„ฑ ์ „์ฒด ๋ชฉ๋ก์€ OptionsยทClasses๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.