| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- /* Group */
- window.getGroupValues = function(event)
- {
- let groups = [];
- for(let key in pivotState().settings) {
- if(!key.startsWith("group")) continue;
- groups.push(pivotState().settings[key]);
- }
- return groups;
- }
- window.addSettingGroup = function(event)
- {
- let groupIndex = getGroupIndex(event);
- let groupValues = getGroupValues();
- groupValues.splice(groupIndex, 0, '');
- rebuildGroups(groupValues);
- allowAutoGenDrills();
- setDesignChangedWarning();
- updateDesignPage('settings');
- }
- window.deleteSettingGroup = function(event)
- {
- let groupIndex = getGroupIndex(event) - 1;
- let groupValues = getGroupValues();
- groupValues.splice(groupIndex, 1);
- rebuildGroups(groupValues);
- allowAutoGenDrills();
- setDesignChangedWarning();
- updateDesignPage('deleteGroup');
- }
- window.rebuildGroups = function(groupValues)
- {
- let {settings} = pivotState();
- for(let key in settings) {
- if(key.startsWith("group")) delete settings[key];
- }
- let index = 1;
- for(let key in groupValues) {
- let group = 'group' + index;
- settings[group] = groupValues[key];
- index ++;
- }
- pivotState('settings', settings);
- }
- /* Column */
- window.addSettingColumn = function(event)
- {
- allowAutoGenDrills();
- updateDesignPage('addColumn');
- }
- window.deleteSettingColumn = function(event)
- {
- let {settings} = pivotState();
- let columnIndex = getColumnIndex(event) - 1;
- let column = settings.columns[columnIndex];
- settings.columns.splice(columnIndex, 1);
- allowAutoGenDrills();
- removeDrillByColumn(column.field);
- pivotState('settings', settings);
- updateDesignPage('deleteColumn');
- }
- /* change function */
- window.changeSettingGroup = function(event)
- {
- allowAutoGenDrills();
- let key = getGroupName(event);
- setDesignChangedWarning();
- setPivotState(key, $(event.target).val());
- }
- window.changeSettingColumnField = function(event)
- {
- let columnField = $(event.target).closest('.column-line').find('.picker-column').find('.form-group-wrapper').zui('picker').$.value;
- changeColumnCommon(event, 'field', $(event.target).val());
- allowAutoGenDrills();
- setDesignChangedWarning(columnField, true);
- removeDrillFields();
- }
- window.changeSettingColumnOrigin = function(event)
- {
- changeColumnCommon(event, 'showOrigin', $(event.target).is(':checked') ? 1 : 0)
- allowAutoGenDrills();
- updateDesignPage('changeOrigin', getColumnIndex(event));
- }
- window.changeSettingColumnSlice = function(event)
- {
- let columnField = $(event.target).closest('.column-line').find('.picker-column').find('.form-group-wrapper').zui('picker').$.value;
- setDesignChangedWarning(columnField, true);
- changeColumnCommon(event, 'slice', $(event.target).val());
- allowAutoGenDrills();
- updateDesignPage('changeSlice', getColumnIndex(event));
- }
- window.changeSettingColumnStat = function(event)
- {
- changeColumnCommon(event, 'stat', $(event.target).val());
- }
- window.removeDrillByColumn = function(field)
- {
- if(!pivotState().drills.length) return;
- let {drills} = pivotState();
- const index = drills.findIndex(drill => drill.field == field);
- if(index < 0) return;
- const drill = drills[index];
- if(drill.type == 'auto')
- {
- delete drills[index];
- return;
- }
- drills[index].field = '';
- pivotState('drills', drills);
- }
- window.removeDrillFields = function()
- {
- let {settings, drills, defaultDrill} = pivotState();
- let fields = settings.columns.map(column => column.field);
- if(!fields.includes(defaultDrill.field)) defaultDrill.field = '';
- if(drills.length)
- {
- for(drillIndex in drills)
- {
- let field = drills[drillIndex].field;
- if(!fields.includes(field)) drills[drillIndex].field = '';
- }
- }
- pivotState('drills', drills);
- pivotState('defaultDrill', defaultDrill);
- }
- window.changeSettingColumnShowMode = function(event)
- {
- changeColumnCommon(event, 'showMode', $(event.target).val());
- updateDesignPage('changeShowMode', getColumnIndex(event));
- }
- window.changeSettingColumnMonopolize = function(event)
- {
- let monopolize = $(event.target).is(':checked') ? 1 : 0;
- changeColumnCommon(event, 'monopolize', monopolize);
- }
- window.changeShowTotal = function(event)
- {
- changeColumnCommon(event, 'showTotal', $(event.target).val());
- }
- window.handleSummaryChange = function(event)
- {
- const checked = $(event.target).is(':checked');
- if(checked)
- {
- setPivotState('summary', 'use');
- }
- else
- {
- setPivotState('', {summary: 'notuse'});
- }
- allowAutoGenDrills();
- updateDesignPage('settings');
- }
- window.handleColumnTotalChange = function(event)
- {
- setPivotState('columnTotal', $(event.target).val());
- updateDesignPage('summaryColumn');
- }
- window.handleColumnPositionChange = function(event)
- {
- setPivotState('columnPosition', $(event.target).val());
- }
- /* Function changeColumnCommon */
- window.changeColumnCommon = function(e, field, value)
- {
- let columnIndex = getColumnIndex(e) - 1;
- let settingStr = 'columns.' + columnIndex + '.' + field;
- setPivotState(settingStr, value);
- }
- /* Tool function, need not care about them at most of time. */
- /* set pivotState field function */
- window.commonPivotState = function(str, value = '', mode = 'set')
- {
- let {settings} = pivotState();
- let parts = str.split(".");
- const length = parts.length;
- if(length > 3) return;
- let [field, index, key] = parts;
- if(mode == 'set')
- {
- if(length == 1) settings = field == '' ? value : {...settings, [field]: value};
- if(length == 2) settings[field][index] = value;
- if(length == 3) settings[field][index][key] = value;
- pivotState('settings', settings);
- }
- if(mode == 'get')
- {
- if(length == 1) return field == '' ? settings : settings[field];
- if(length == 2) return settings[field][index];
- if(length == 3) return settings[field][index][key];
- }
- }
- window.setPivotState = function(str, value)
- {
- return commonPivotState(str, value, 'set');
- }
- window.getPivotState = function(str)
- {
- return commonPivotState(str, '', 'get');
- }
- /* Group setting */
- window.getGroupName = function(e)
- {
- return $(e.target).closest(".group-line").data('key');
- }
- window.getGroupIndex = function(e)
- {
- return parseInt(getGroupName(e).slice(5));
- }
- /* Column setting */
- window.getColumnIndex = function(e)
- {
- return parseInt($(e.target).closest(".column-line").data('index'));
- }
|