| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- window.deleteDrill = function(event)
- {
- let {drills} = pivotState();
- let drillIndex = getDrillIndex(event);
- delete drills[drillIndex];
- pivotState('drills', drills);
- updateDesignPage('deleteDrill');
- }
- /* Drill setting */
- window.getDrillIndex = function(e)
- {
- return parseInt($(e.target).closest(".drill-line").data('index'));
- }
- window.addCondition = function(event)
- {
- let index = getConditionIndex(event);
- let modalID = getModalID(event);
- let newCondition = {'drillObject': '', 'drillAlias': '', 'drillField': '', 'queryField': ''};
- setDrillType(modalID, 'manual');
- let {drills, defaultDrill} = pivotState();
- if(modalID == 'drillModalDefault') {
- defaultDrill.condition.splice(index, 0, newCondition);
- pivotState('defaultDrill', defaultDrill);
- updateDesignPage('addCondition', 'Default');
- }
- else {
- let drillIndex = getModalDrillIndex(modalID);
- drills[drillIndex].condition.splice(index, 0, newCondition);
- pivotState('drills', drills);
- updateDesignPage('addCondition', drillIndex);
- }
- }
- window.deleteCondition = function(event)
- {
- let index = getConditionIndex(event) - 1;
- let modalID = getModalID(event);
- setDrillType(modalID, 'manual');
- let {drills, defaultDrill} = pivotState();
- if(modalID == 'drillModalDefault') {
- defaultDrill.condition.splice(index, 1);
- pivotState('defaultDrill', defaultDrill);
- updateDesignPage('addCondition', 'Default');
- }
- else {
- let drillIndex = getModalDrillIndex(modalID);
- drills[drillIndex].condition.splice(index, 1);
- pivotState('drills', drills);
- updateDesignPage('addCondition', drillIndex);
- }
- }
- window.changeField = function(event)
- {
- setDrillField(getModalID(event), 'field', $(event.target).val());
- setDrillType(getModalID(event), 'manual');
- }
- window.changeWhereSQL = function(event)
- {
- setDrillField(getModalID(event), 'whereSql', $(event.target).val());
- setDrillType(getModalID(event), 'manual');
- }
- window.changeDrillField = function(event)
- {
- let index = getConditionIndex(event) - 1;
- const value = $(event.target).val();
- let drillFieldKeys = value.split('.');
- let isSubquery = drillFieldKeys.length == 2;
- let drillObject = isSubquery ? '' : drillFieldKeys[1];
- let drillAlias = drillFieldKeys[0];
- let drillField = isSubquery ? drillFieldKeys[1] : drillFieldKeys[2];
- setDrillField(getModalID(event), `condition.${index}.drillObject`, drillObject);
- setDrillField(getModalID(event), `condition.${index}.drillAlias`, drillAlias);
- setDrillField(getModalID(event), `condition.${index}.drillField`, drillField);
- setDrillType(getModalID(event), 'manual');
- }
- window.changeQueryField = function(event)
- {
- let index = getConditionIndex(event) - 1;
- setDrillField(getModalID(event), `condition.${index}.queryField`, $(event.target).val());
- setDrillType(getModalID(event), 'manual');
- }
- window.changeObject = function(event)
- {
- const modalID = getModalID(event);
- setDrillField(modalID, 'object', $(event.target).val());
- setDrillType(modalID, 'manual');
- let {drills, defaultDrill} = pivotState();
- if(modalID == 'drillModalDefault') {
- defaultDrill.objectChanged = 1;
- pivotState('defaultDrill', defaultDrill);
- updateDesignPage('changeObject', 'Default');
- }
- else {
- let drillIndex = getModalDrillIndex(modalID);
- drills[drillIndex].objectChanged = 1;
- pivotState('drills', drills);
- updateDesignPage('changeObject', drillIndex);
- }
- }
- window.checkRequiredFields = function(modalID)
- {
- let hasError = false;
- $(`#${modalID} .form-tip`).addClass('hidden');
- let drill = modalID == 'drillModalDefault' ? pivotState().defaultDrill : pivotState().drills[getModalDrillIndex(modalID)];
- if(drill.field == '') {
- hasError = true;
- showErrorTip(modalID, 'field');
- }
- if(drill.object == '') {
- hasError = true;
- showErrorTip(modalID, 'object');
- }
- drill.condition.forEach((condition, index) => {
- if(condition.drillField == '') {
- hasError = true;
- showErrorTip(modalID, 'drillField', index + 1);
- }
- if(condition.queryField == '') {
- hasError = true;
- showErrorTip(modalID, 'queryField', index + 1);
- }
- });
- return hasError;
- }
- window.showErrorTip = function(modalID, field, index = null)
- {
- let divClass = `.${field}-select`;
- if(index) divClass = `.${field}-select-${index}`;
- let selector = `#${modalID} ${divClass}`;
- $(selector).find('.form-tip').removeClass('hidden');
- }
- window.getModalID = function(event)
- {
- return $(event.target).closest('.modal').attr('id');
- }
- window.getModalDrillIndex = function(modalID)
- {
- if(modalID == 'drillModalDefault') return 'Default';
- return parseInt(modalID.substring(10));
- }
- window.getConditionIndex = function(event)
- {
- return $(event.target).closest('.condition-line').data('index');
- }
- window.setDrillField = function(modalID, str, value)
- {
- let parts = str.split(".");
- if(parts.length > 3) return;
- let {drills, defaultDrill} = pivotState();
- if(modalID == 'drillModalDefault')
- {
- if(parts.length == 1)
- {
- let field = parts[0];
- defaultDrill[field] = value;
- }
- else if(parts.length == 3)
- {
- let field = parts[0];
- let index = parts[1];
- let key = parts[2];
- defaultDrill[field][index][key] = value;
- }
- pivotState('defaultDrill', defaultDrill);
- }
- else
- {
- let drillIndex = getModalDrillIndex(modalID);
- if(parts.length == 1)
- {
- let field = parts[0];
- drills[drillIndex][field] = value;
- }
- else if(parts.length == 3)
- {
- let field = parts[0];
- let index = parts[1];
- let key = parts[2];
- drills[drillIndex][field][index][key] = value;
- }
- pivotState('drills', drills);
- }
- }
- window.previewDrillResult = function(event)
- {
- let {drills, defaultDrill} = pivotState();
- let modalID = getModalID(event);
- let drillIndex = getModalDrillIndex(modalID);
- let whereSQL = modalID == 'drillModalDefault' ? defaultDrill.whereSql : drills[getModalDrillIndex(modalID)].whereSql;
- let index = modalID == 'drillModalDefault' ? 'Default' : drillIndex;
- if(modalID == 'drillModalDefault')
- {
- defaultDrill.preview = 1;
- pivotState('defaultDrill', defaultDrill);
- }
- else
- {
- drills[drillIndex].preview = 1;
- pivotState('drills', drills);
- }
- if(checkRequiredFields(modalID)) return;
- updateDesignPage('previewResult', index);
- }
- window.dryRunDrillSQL = function(modalID, postData, callback)
- {
- let errorDiv = $('#' + modalID).find('.error-message');
- errorDiv.empty();
- let url = $.createLink('pivot', 'ajaxGetPreviewResult');
- $.post(url, postData, function(result)
- {
- let resp = JSON.parse(result);
- if(resp.status == 'success') callback();
- if(resp.status == 'fail')
- {
- let div = "<div class='form-tip text-danger'>" + resp.error + "</div>";
- errorDiv.append(div);
- }
- });
- }
- window.saveDrill = function(event)
- {
- let modalID = getModalID(event);
- if(checkRequiredFields(modalID)) return;
- let {drills, defaultDrill, filters} = pivotState();
- let drillIndex = getModalDrillIndex(modalID);
- let drill = modalID == 'drillModalDefault' ? defaultDrill : drills[drillIndex];
- let postData = {'object': drill.object, 'whereSql': drill.whereSql, 'filters': JSON.stringify(filters)};
- dryRunDrillSQL(modalID, postData, function()
- {
- if(modalID == 'drillModalDefault') drills.push(defaultDrill);
- if(modalID != 'drillModalDefault') setDesignChangedWarning(drill.field, false);
- pivotState('drills', drills);
- updateDesignPage(modalID == 'drillModalDefault' ? 'addDrill' : 'editDrill');
- });
- }
- window.refreshConditions = function(event)
- {
- let {drills, defaultDrill, filters} = pivotState();
- let modalID = getModalID(event);
- let drillIndex = getModalDrillIndex(modalID);
- let drill = modalID == 'drillModalDefault' ? defaultDrill : drills[drillIndex];
- let postData = {'object': drill.object, 'whereSql': drill.whereSql, 'filters': JSON.stringify(filters)};
- dryRunDrillSQL(modalID, postData, function()
- {
- updateDesignPage('addCondition', drillIndex);
- });
- }
|