From a9ec9364a881cdb1a3775ad873e4f169b8b11979 Mon Sep 17 00:00:00 2001 From: zx chen <346839943@qq.com> Date: Thu, 25 Aug 2016 13:37:24 +0800 Subject: [PATCH] KYLIN-1904-WEB-Global-Dictionary --- webapp/app/js/controllers/cubeAdvanceSetting.js | 114 +++++++++++++++- webapp/app/js/controllers/cubeEdit.js | 25 +++- webapp/app/js/model/cubeDescModel.js | 9 ++ .../partials/cubeDesigner/advanced_settings.html | 150 +++++++++++++++++---- 4 files changed, 264 insertions(+), 34 deletions(-) diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js index 09fb3d4..be90f65 100644 --- a/webapp/app/js/controllers/cubeAdvanceSetting.js +++ b/webapp/app/js/controllers/cubeAdvanceSetting.js @@ -18,14 +18,14 @@ 'use strict'; -KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel,cubesManager,CubeDescModel) { +KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert) { $scope.cubesManager = cubesManager; //rowkey $scope.convertedRowkeys = []; angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(item){ - //var _isDictionary = item.encoding === "dict"?"true":"false"; + //var _isDictionaries = item.encoding === "dict"?"true":"false"; var _isFixedLength = item.encoding.substring(0,12) === "fixed_length"?"true":"false";//fixed_length:12 var _isIntLength = item.encoding.substring(0,3) === "int"?"true":"false";//fixed_length:12 var _encoding = item.encoding; @@ -195,4 +195,114 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi } + $scope.isReuse=false; + $scope.addNew=false; + $scope.newDictionaries = { + "column":null, + "builder": null, + "reuse": null + } + + $scope.initUpdateDictionariesStatus = function(){ + $scope.updateDictionariesStatus = { + isEdit:false, + editIndex:-1 + } + }; + $scope.initUpdateDictionariesStatus(); + + + $scope.addNewDictionaries = function (dictionaries, index) { + if(dictionaries&&index>=0){ + $scope.updateDictionariesStatus.isEdit = true; + $scope.addNew=true; + $scope.updateDictionariesStatus.editIndex = index; + if(dictionaries.builder==null){ + $scope.isReuse=true; + } + else{ + $scope.isReuse=false; + } + } + else{ + $scope.addNew=!$scope.addNew; + } + $scope.newDictionaries = (!!dictionaries)? jQuery.extend(true, {},dictionaries):CubeDescModel.createDictionaries(); + }; + + $scope.saveNewDictionaries = function (){ + if(!$scope.cubeMetaFrame.dictionaries){ + $scope.cubeMetaFrame.dictionaries=[]; + } + + if($scope.updateDictionariesStatus.isEdit == true) { + if ($scope.cubeMetaFrame.dictionaries[$scope.updateDictionariesStatus.editIndex].column != $scope.newDictionaries.column) { + if(!$scope.checkColumn()){ + return false; + } + } + else { + $scope.cubeMetaFrame.dictionaries[$scope.updateDictionariesStatus.editIndex] = $scope.newDictionaries; + } + } + else + { + if(!$scope.checkColumn()){ + return false; + } + $scope.cubeMetaFrame.dictionaries.push($scope.newDictionaries); + } + $scope.newDictionaries = null; + $scope.initUpdateDictionariesStatus(); + $scope.nextDictionariesInit(); + $scope.addNew = !$scope.addNew; + $scope.isReuse = false; + return true; + + }; + + $scope.nextDictionariesInit = function(){ + $scope.nextDic = { + "coiumn":null, + "builder":null, + "reuse":null + } + } + + $scope.checkColumn = function (){ + var isColumnExit=false; + angular.forEach($scope.cubeMetaFrame.dictionaries,function(dictionaries){ + if(!isColumnExit){ + if(dictionaries.column==$scope.newDictionaries.column) + isColumnExit=true; + } + }) + if(isColumnExit){ + SweetAlert.swal('Oops...', "The column named [" + $scope.newDictionaries.column + "] already exists", 'warning'); + return false; + } + return true; + } + + $scope.clearNewDictionaries = function (){ + $scope.newDictionaries = null; + $scope.isReuse=false; + $scope.initUpdateDictionariesStatus(); + $scope.nextDictionariesInit(); + $scope.addNew=!$scope.addNew; + } + + $scope.change = function (){ + $scope.newDictionaries.builder=null; + $scope.newDictionaries.reuse=null; + $scope.isReuse=!$scope.isReuse; + } + + $scope.removeDictionaries = function(arr,element){ + var index = arr.indexOf(element); + if (index > -1) { + arr.splice(index, 1); + } + }; + }); diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index 86c039a..b620d7f 100755 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -116,16 +116,33 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio $scope.getFactColumns = function () { var me_columns = []; angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){ - if($scope.metaModel.model.fact_table !== dimension.table){ - return; - } if(dimension.column && dimension.derived == null){ me_columns.push(dimension.column); + + } + else{ + angular.forEach(dimension.derived,function(derived){ + me_columns.push(derived); + }); + } }); + angular.forEach($scope.cubeMetaFrame.measure,function(measure){ + if(measure.function.parameter.type==column){ + me_columns.push(measure.function.parameter.value); + } + }); - return me_columns; + var unique = [] + + angular.forEach(me_columns, function (column) { + if (unique.indexOf(column) === -1) { + unique.push(column); + } + }); + + return unique; }; diff --git a/webapp/app/js/model/cubeDescModel.js b/webapp/app/js/model/cubeDescModel.js index a6e02ac..57d7e6e 100644 --- a/webapp/app/js/model/cubeDescModel.js +++ b/webapp/app/js/model/cubeDescModel.js @@ -41,6 +41,7 @@ KylinApp.service('CubeDescModel', function () { } } ], + "dictionaries" :[], "rowkey": { "rowkey_columns": [] }, @@ -79,6 +80,14 @@ KylinApp.service('CubeDescModel', function () { return measure; } + this.createDictionaries = function () { + var dictionaries = { + "column": null, + "builder": null, + "reuse":null + } + return dictionaries; + } this.createAggGroup = function () { var group = { diff --git a/webapp/app/partials/cubeDesigner/advanced_settings.html b/webapp/app/partials/cubeDesigner/advanced_settings.html index ab2b5dc..eac6944 100755 --- a/webapp/app/partials/cubeDesigner/advanced_settings.html +++ b/webapp/app/partials/cubeDesigner/advanced_settings.html @@ -16,11 +16,9 @@ * limitations under the License. --> -
| - - | |
|
Hierarchy Dimensions
@@ -121,7 +116,6 @@
{{hierarchyDims}} - |
|