You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2015/05/15 07:22:14 UTC
[45/52] [abbrv] incubator-kylin git commit: use modelsManager
use modelsManager
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/d9e2d046
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/d9e2d046
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/d9e2d046
Branch: refs/heads/0.8.0
Commit: d9e2d046d8bd72a0fd56f6bbf8806c9215dd9035
Parents: 0088884
Author: jiazhong <ji...@ebay.com>
Authored: Wed Apr 8 17:27:04 2015 +0800
Committer: honma <ho...@ebay.com>
Committed: Fri May 15 11:38:33 2015 +0800
----------------------------------------------------------------------
webapp/app/index.html | 3 +-
webapp/app/js/controllers/cube.js | 15 +-
webapp/app/js/controllers/cubeAdvanceSetting.js | 5 +-
webapp/app/js/controllers/cubeDimensions.js | 9 +-
webapp/app/js/controllers/cubeEdit.js | 66 +++----
webapp/app/js/controllers/cubeModel.js | 15 +-
webapp/app/js/controllers/cubeSchema.js | 21 +--
webapp/app/js/controllers/modelDimensions.js | 15 +-
webapp/app/js/controllers/modelEdit.js | 36 ++--
webapp/app/js/controllers/modelSchema.js | 14 +-
webapp/app/js/controllers/models.js | 101 +++--------
webapp/app/js/model/cubesManager.js | 4 +
webapp/app/js/model/modelList.js | 91 ----------
webapp/app/js/model/modelsManager.js | 178 +++++++++++++++++++
.../cubeDesigner/advanced_settings.html | 18 +-
.../app/partials/cubeDesigner/dimensions.html | 4 +-
webapp/app/partials/cubeDesigner/info.html | 16 +-
webapp/app/partials/cubeDesigner/measures.html | 6 +-
webapp/app/partials/cubeDesigner/overview.html | 8 +-
webapp/app/partials/cubes/cube_detail.html | 98 +++++-----
webapp/app/partials/jobs/job_merge.html | 16 +-
webapp/app/partials/jobs/job_refresh.html | 12 +-
webapp/app/partials/jobs/job_submit.html | 11 +-
.../modelDesigner/conditions_settings.html | 28 +--
.../app/partials/modelDesigner/data_model.html | 18 +-
.../modelDesigner/model_dimensions.html | 12 +-
.../app/partials/modelDesigner/model_info.html | 8 +-
.../partials/modelDesigner/model_measures.html | 8 +-
webapp/app/partials/models/model_detail.html | 38 ++--
webapp/app/partials/models/model_schema.html | 8 +-
webapp/app/partials/models/models.html | 4 +-
webapp/app/partials/models/models_tree.html | 4 +-
32 files changed, 477 insertions(+), 413 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/webapp/app/index.html b/webapp/app/index.html
index 19ced08..8845499 100644
--- a/webapp/app/index.html
+++ b/webapp/app/index.html
@@ -145,9 +145,10 @@
<script src="js/model/tableModel.js"></script>
<script src="js/model/cubeListModel.js"></script>
<script src="js/model/jobListModel.js"></script>
+<script src="js/model/cubesManager.js"></script>
<!--New GUI-->
-<script src="js/model/modelList.js"></script>
+<script src="js/model/modelsManager.js"></script>
<script src="js/controllers/page.js"></script>
<script src="js/controllers/index.js"></script>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cube.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cube.js b/webapp/app/js/controllers/cube.js
index f31742a..8e184d1 100755
--- a/webapp/app/js/controllers/cube.js
+++ b/webapp/app/js/controllers/cube.js
@@ -18,10 +18,13 @@
'use strict';
-KylinApp.controller('CubeCtrl', function ($scope, AccessService, MessageService, CubeService, TableService, GraphService, UserService,SweetAlert,loadingRequest,ModelList,$modal) {
+KylinApp.controller('CubeCtrl', function ($scope, AccessService, MessageService, CubeService, TableService, GraphService, UserService,SweetAlert,loadingRequest,modelsManager,$modal,cubesManager) {
$scope.newAccess = null;
$scope.state = {jsonEdit: false};
+ $scope.modelsManager = modelsManager;
+ $scope.cubesManager = cubesManager;
+
$scope.buildGraph = function (cube) {
GraphService.buildTree(cube);
};
@@ -242,7 +245,9 @@ KylinApp.controller('CubeCtrl', function ($scope, AccessService, MessageService,
};
$scope.startJobSubmit = function (cube) {
- $scope.metaModel.model = ModelList.getModelByCube(cube.name);
+ $scope.metaModel={
+ model:modelsManager.getModelByCube(cube.name)
+ }
if ($scope.metaModel.model.name) {
if ($scope.metaModel.model.partition_desc.partition_date_column) {
$modal.open({
@@ -306,6 +311,9 @@ KylinApp.controller('CubeCtrl', function ($scope, AccessService, MessageService,
};
$scope.startRefresh = function (cube) {
+ $scope.metaModel={
+ model:modelsManager.getModelByCube(cube.name)
+ };
$modal.open({
templateUrl: 'jobRefresh.html',
controller: jobSubmitCtrl,
@@ -325,6 +333,9 @@ KylinApp.controller('CubeCtrl', function ($scope, AccessService, MessageService,
};
$scope.startMerge = function (cube) {
+ $scope.metaModel={
+ model:modelsManager.getModelByCube(cube.name)
+ };
$modal.open({
templateUrl: 'jobMerge.html',
controller: jobSubmitCtrl,
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index c9558d8..c29f513 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -18,10 +18,11 @@
'use strict';
-KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel) {
+KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfig,MetaModel,cubesManager) {
+ $scope.cubesManager = cubesManager;
//convert some undefined or null value
- angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(rowkey){
+ angular.forEach(cubesManager.cubeMetaFrame.rowkey.rowkey_columns,function(rowkey){
if(!rowkey.dictionary){
rowkey.dictionary = "false";
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cubeDimensions.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeDimensions.js b/webapp/app/js/controllers/cubeDimensions.js
index 35b66ab..8608bfc 100644
--- a/webapp/app/js/controllers/cubeDimensions.js
+++ b/webapp/app/js/controllers/cubeDimensions.js
@@ -18,8 +18,9 @@
'use strict';
-KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel) {
+KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cubesManager) {
+ $scope.cubeManager = cubesManager;
// Available columns list derived from cube data model.
$scope.availableColumns = {};
@@ -114,7 +115,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel) {
// Check column status: selected or disabled based on current cube dimensions.
$scope.initColumnStatus = function () {
- angular.forEach($scope.cubeMetaFrame.dimensions, function (dim) {
+ angular.forEach(cubesManager.cubeMetaFrame.dimensions, function (dim) {
var cols = dimCols(dim);
angular.forEach(cols, function (colName) {
@@ -189,7 +190,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel) {
return types;
};
- var dimList = $scope.cubeMetaFrame.dimensions;
+ var dimList = cubesManager.cubeMetaFrame.dimensions;
// Open add/edit dimension modal.
$scope.openDimModal = function (dimType) {
@@ -417,7 +418,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel) {
// Check whether there is column conflicts.
$scope.dimConflicts = [];
- $scope.$watch('cubeMetaFrame.dimensions', function (newVal, oldVal) {
+ $scope.$watch('cubesManager.cubeMetaFrame.dimensions', function (newVal, oldVal) {
if (!newVal || !newVal.length) {
return;
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index 98fc9a3..94ea27b 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -19,7 +19,7 @@
'use strict';
-KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $location, $templateCache, $interpolate, MessageService, TableService, CubeDescService, CubeService, loadingRequest, SweetAlert,$log,cubeConfig,CubeDescModel,MetaModel,TableModel,ModelDescService,ModelList) {
+KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $location, $templateCache, $interpolate, MessageService, TableService, CubeDescService, CubeService, loadingRequest, SweetAlert,$log,cubeConfig,CubeDescModel,MetaModel,TableModel,ModelDescService,modelsManager,cubesManager) {
$scope.cubeConfig = cubeConfig;
// when add cube will transfer model Name
@@ -115,28 +115,30 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
if ($scope.isEdit = !!$routeParams.cubeName) {
CubeDescService.get({cube_name: $routeParams.cubeName}, function (detail) {
if (detail.length > 0) {
- $scope.cubeMetaFrame = detail[0];
+ cubesManager.cubeMetaFrame = detail[0];
+ cubesManager.cubeMetaFrame = detail[0];
$scope.metaModel = {};
//get model from API when page refresh
- if(!ModelList.getModels().length){
- ModelDescService.get({model_name: $scope.cubeMetaFrame.model_name}, function (_model) {
+ if(!modelsManager.getModels().length){
+ ModelDescService.get({model_name: cubesManager.cubeMetaFrame.model_name}, function (_model) {
$scope.metaModel.model = _model;
});
}
- $scope.metaModel.model=ModelList.getModel($scope.cubeMetaFrame.model_name);
+ $scope.metaModel.model=modelsManager.getModel(cubesManager.cubeMetaFrame.model_name);
- $scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);
+ $scope.state.cubeSchema = angular.toJson(cubesManager.cubeMetaFrame, true);
}
});
} else {
- $scope.cubeMetaFrame = CubeDescModel.createNew();
+// cubesManager.cubeMetaFrame = CubeDescModel.createNew();
+ cubesManager.cubeMetaFrame = CubeDescModel.createNew();
$scope.metaModel ={
- model : ModelList.getModel(modelName)
+ model : modelsManager.getModel(modelName)
}
- $scope.cubeMetaFrame.model_name = modelName;
- $scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);
+ cubesManager.cubeMetaFrame.model_name = modelName;
+ $scope.state.cubeSchema = angular.toJson(cubesManager.cubeMetaFrame, true);
}
@@ -161,18 +163,18 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
}
//use cubedesc name as model name
if($scope.metaModel.model.name===""||angular.isUndefined($scope.metaModel.model.name)){
- $scope.metaModel.model.name = $scope.cubeMetaFrame.name;
+ $scope.metaModel.model.name = cubesManager.cubeMetaFrame.name;
}
//set model ref for cubeDesc
- if($scope.cubeMetaFrame.model_name===""||angular.isUndefined($scope.cubeMetaFrame.model_name)){
- $scope.cubeMetaFrame.model_name = $scope.cubeMetaFrame.name;
+ if(cubesManager.cubeMetaFrame.model_name===""||angular.isUndefined(cubesManager.cubeMetaFrame.model_name)){
+ cubesManager.cubeMetaFrame.model_name = cubesManager.cubeMetaFrame.name;
}
- $scope.state.project = $scope.cubeMetaFrame.project;
-// delete $scope.cubeMetaFrame.project;
+ $scope.state.project = cubesManager.cubeMetaFrame.project;
+// delete cubesManager.cubeMetaFrame.project;
- $scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);
+ $scope.state.cubeSchema = angular.toJson(cubesManager.cubeMetaFrame, true);
};
$scope.cubeResultTmpl = function (notification) {
@@ -210,7 +212,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
} else {
$scope.saveCubeRollBack();
- $scope.cubeMetaFrame.project = $scope.state.project;
+ cubesManager.cubeMetaFrame.project = $scope.state.project;
var message =request.message;
var msg = !!(message) ? message : 'Failed to take action.';
MessageService.sendMsg($scope.cubeResultTmpl({'text':msg,'schema':$scope.state.cubeSchema}), 'error', {}, true, 'top_center');
@@ -237,7 +239,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
MessageService.sendMsg($scope.cubeResultTmpl({'text':'Created the cube successfully.',type:'success'}), 'success', {}, true, 'top_center');
} else {
$scope.saveCubeRollBack();
- $scope.cubeMetaFrame.project = $scope.state.project;
+ cubesManager.cubeMetaFrame.project = $scope.state.project;
var message =request.message;
var msg = !!(message) ? message : 'Failed to take action.';
MessageService.sendMsg($scope.cubeResultTmpl({'text':msg,'schema':$scope.state.cubeSchema}), 'error', {}, true, 'top_center');
@@ -277,7 +279,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
$scope.updateMandatory = function(rowkey_column){
if(!rowkey_column.mandatory){
- angular.forEach($scope.cubeMetaFrame.rowkey.aggregation_groups, function (group, index) {
+ angular.forEach(cubesManager.cubeMetaFrame.rowkey.aggregation_groups, function (group, index) {
var index = group.indexOf(rowkey_column.column);
if(index>-1){
group.splice(index,1);
@@ -291,7 +293,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
var tmpRowKeyColumns = [];
var tmpAggregationItems = [];//put all aggregation item
var hierarchyItemArray = [];//put all hierarchy items
- angular.forEach($scope.cubeMetaFrame.dimensions, function (dimension, index) {
+ angular.forEach(cubesManager.cubeMetaFrame.dimensions, function (dimension, index) {
//derived column
if(dimension.derived&&dimension.derived.length){
@@ -361,7 +363,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
//rm mandatory column from aggregation item
- angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(value,index){
+ angular.forEach(cubesManager.cubeMetaFrame.rowkey.rowkey_columns,function(value,index){
if(value.mandatory){
tmpAggregationItems = _.filter(tmpAggregationItems,function(item){
return item!=value.column;
@@ -369,16 +371,16 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
}
});
- var rowkeyColumns = $scope.cubeMetaFrame.rowkey.rowkey_columns;
+ var rowkeyColumns = cubesManager.cubeMetaFrame.rowkey.rowkey_columns;
var newRowKeyColumns = sortSharedData(rowkeyColumns,tmpRowKeyColumns);
var increasedColumns = increasedColumn(rowkeyColumns,tmpRowKeyColumns);
newRowKeyColumns = newRowKeyColumns.concat(increasedColumns);
//! here get the latest rowkey_columns
- $scope.cubeMetaFrame.rowkey.rowkey_columns = newRowKeyColumns;
+ cubesManager.cubeMetaFrame.rowkey.rowkey_columns = newRowKeyColumns;
if($scope.cubeMode==="editExistCube") {
- var aggregationGroups = $scope.cubeMetaFrame.rowkey.aggregation_groups;
+ var aggregationGroups = cubesManager.cubeMetaFrame.rowkey.aggregation_groups;
// rm unused item from group,will only rm when [edit] dimension
angular.forEach(aggregationGroups, function (group, index) {
if (group) {
@@ -410,7 +412,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
if($scope.cubeMode==="addNewCube"){
if(!tmpAggregationItems.length) {
- $scope.cubeMetaFrame.rowkey.aggregation_groups=[];
+ cubesManager.cubeMetaFrame.rowkey.aggregation_groups=[];
return;
}
@@ -426,7 +428,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
//hierarchyItems
var increasedDataGroups = sliceGroupItemToGroups(unHierarchyItems);
if(!hierarchyItemArray.length){
- $scope.cubeMetaFrame.rowkey.aggregation_groups = increasedDataGroups;
+ cubesManager.cubeMetaFrame.rowkey.aggregation_groups = increasedDataGroups;
return;
};
@@ -474,7 +476,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
}
}
//! here get the latest aggregation groups,only effect when add newCube
- $scope.cubeMetaFrame.rowkey.aggregation_groups = increasedDataGroups;
+ cubesManager.cubeMetaFrame.rowkey.aggregation_groups = increasedDataGroups;
}
}
@@ -554,10 +556,10 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
// ~ private methods
function generateColumnFamily() {
- $scope.cubeMetaFrame.hbase_mapping.column_family = [];
+ cubesManager.cubeMetaFrame.hbase_mapping.column_family = [];
var colFamily = ColFamily();
var normalMeasures = [], distinctCountMeasures=[];
- angular.forEach($scope.cubeMetaFrame.measures, function (measure, index) {
+ angular.forEach(cubesManager.cubeMetaFrame.measures, function (measure, index) {
if(measure.function.expression === 'COUNT_DISTINCT'){
distinctCountMeasures.push(measure);
}else{
@@ -569,7 +571,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
angular.forEach(normalMeasures, function(normalM, index){
nmcf.columns[0].measure_refs.push(normalM.name);
});
- $scope.cubeMetaFrame.hbase_mapping.column_family.push(nmcf);
+ cubesManager.cubeMetaFrame.hbase_mapping.column_family.push(nmcf);
}
if (distinctCountMeasures.length > 0){
@@ -577,7 +579,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
angular.forEach(distinctCountMeasures, function(dcm, index){
dccf.columns[0].measure_refs.push(dcm.name);
});
- $scope.cubeMetaFrame.hbase_mapping.column_family.push(dccf);
+ cubesManager.cubeMetaFrame.hbase_mapping.column_family.push(dccf);
}
}
@@ -601,7 +603,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
});
$scope.$on('DimensionsEdited', function (event) {
- if ($scope.cubeMetaFrame) {
+ if (cubesManager.cubeMetaFrame) {
reGenerateRowKey();
}
});
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cubeModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeModel.js b/webapp/app/js/controllers/cubeModel.js
index cbd7978..dd7991d 100644
--- a/webapp/app/js/controllers/cubeModel.js
+++ b/webapp/app/js/controllers/cubeModel.js
@@ -18,8 +18,9 @@
'use strict';
-KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaModel,SweetAlert,GraphService,$log,TableModel,ModelService,loadingRequest) {
+KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaModel,SweetAlert,GraphService,$log,TableModel,ModelService,loadingRequest,modelsManager) {
+ $scope.modelsManager = modelsManager;
$scope.buildGraph = function (model) {
// var newModel = jQuery.extend(true, {}, model);
@@ -71,7 +72,7 @@ KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaMod
$scope.newLookup = Lookup();
- var lookupList = $scope.model.lookups;
+ var lookupList = modelsManager.selectedModel.lookups;
$scope.openLookupModal = function () {
var modalInstance = $modal.open({
@@ -134,7 +135,7 @@ KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaMod
};
$scope.removeLookup = function (lookup) {
- var dimExist = _.some($scope.model.dimensions,function(item,index){
+ var dimExist = _.some(modelsManager.selectedModel.dimensions,function(item,index){
return item.table===lookup.table;
});
if(dimExist) {
@@ -148,9 +149,9 @@ KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaMod
closeOnConfirm: true
}, function (isConfirm) {
if (isConfirm) {
- for (var i = $scope.model.dimensions.length - 1; i >= 0; i--) {
- if ($scope.model.dimensions[i].table === lookup.table) {
- $scope.model.dimensions.splice(i, 1);
+ for (var i = modelsManager.selectedModel.dimensions.length - 1; i >= 0; i--) {
+ if (modelsManager.selectedModel.dimensions[i].table === lookup.table) {
+ modelsManager.selectedModel.dimensions.splice(i, 1);
}
}
lookupList.splice(lookupList.indexOf(lookup), 1);
@@ -195,7 +196,7 @@ KylinApp.controller('CubeModelCtrl', function ($scope, $modal,cubeConfig,MetaMod
}
//column type validate
- var fact_table = $scope.model.fact_table;
+ var fact_table = modelsManager.selectedModel.fact_table;
var lookup_table = $scope.newLookup.table;
for(var i = 0;i<$scope.newLookup.join.primary_key.length;i++){
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/cubeSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js
index 327dc25..89ee492 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -18,8 +18,9 @@
'use strict';
-KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserService, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,ModelDescService,SweetAlert) {
+KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserService, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,ModelDescService,SweetAlert,cubesManager) {
+ $scope.cubesManager = cubesManager;
$scope.projects = [];
$scope.newDimension = null;
$scope.newMeasure = null;
@@ -42,7 +43,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
$scope.state = {mode: "view"};
}
- $scope.$watch('cubeMetaFrame', function (newValue, oldValue) {
+ $scope.$watch('cubesManager.cubeMetaFrame', function (newValue, oldValue) {
if(!newValue){
return;
}
@@ -66,8 +67,8 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
};
$scope.saveNewMeasure = function () {
- if ($scope.cubeMetaFrame.measures.indexOf($scope.newMeasure) === -1) {
- $scope.cubeMetaFrame.measures.push($scope.newMeasure);
+ if (cubesManager.cubeMetaFrame.measures.indexOf($scope.newMeasure) === -1) {
+ cubesManager.cubeMetaFrame.measures.push($scope.newMeasure);
}
$scope.newMeasure = null;
};
@@ -103,7 +104,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
}
$scope.addNewRowkeyColumn = function () {
- $scope.cubeMetaFrame.rowkey.rowkey_columns.push({
+ cubesManager.cubeMetaFrame.rowkey.rowkey_columns.push({
"column": "",
"length": 0,
"dictionary": "true",
@@ -112,7 +113,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
};
$scope.addNewAggregationGroup = function () {
- $scope.cubeMetaFrame.rowkey.aggregation_groups.push([]);
+ cubesManager.cubeMetaFrame.rowkey.aggregation_groups.push([]);
};
$scope.refreshAggregationGroup = function (list, index, aggregation_groups) {
@@ -212,7 +213,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
$scope.check_cube_dimension = function(){
var errors = [];
- if(!$scope.cubeMetaFrame.dimensions.length){
+ if(!cubesManager.cubeMetaFrame.dimensions.length){
errors.push("Dimension can't be null");
}
var errorInfo = "";
@@ -228,7 +229,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
};
$scope.check_cube_measure = function(){
- var _measures = $scope.cubeMetaFrame.measures;
+ var _measures = cubesManager.cubeMetaFrame.measures;
var errors = [];
if(!_measures||!_measures.length){
errors.push("Please define your metrics.");
@@ -260,7 +261,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
$scope.check_cube_setting = function(){
var errors = [];
- angular.forEach($scope.cubeMetaFrame.rowkey.aggregation_groups,function(group){
+ angular.forEach(cubesManager.cubeMetaFrame.rowkey.aggregation_groups,function(group){
if(!group.length){
errors.push("Each aggregation group can't be empty.");
}
@@ -304,7 +305,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
TableModel.aceSrcTbLoaded();
}
- $scope.cubeMetaFrame.project = projName;
+ cubesManager.cubeMetaFrame.project = projName;
}
angular.forEach($scope.projects, function (project, index) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/modelDimensions.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelDimensions.js b/webapp/app/js/controllers/modelDimensions.js
index c89e6a6..41acd24 100644
--- a/webapp/app/js/controllers/modelDimensions.js
+++ b/webapp/app/js/controllers/modelDimensions.js
@@ -18,7 +18,8 @@
'use strict';
-KylinApp.controller('ModelDimensionsCtrl', function ($scope, $modal,MetaModel) {
+KylinApp.controller('ModelDimensionsCtrl', function ($scope, $modal,MetaModel,modelsManager) {
+ $scope.modelsManager = modelsManager;
// Available columns list derived from cube data model.
$scope.availableColumns = {};
@@ -32,24 +33,24 @@ KylinApp.controller('ModelDimensionsCtrl', function ($scope, $modal,MetaModel) {
// Dump available columns plus column table name, whether is from lookup table.
$scope.initColumns = function () {
- var factTable = $scope.model.fact_table;
+ var factTable = modelsManager.selectedModel.fact_table;
- $scope.availableTables.push($scope.model.fact_table);
- var lookups = $scope.model.lookups;
+ $scope.availableTables.push(modelsManager.selectedModel.fact_table);
+ var lookups = modelsManager.selectedModel.lookups;
for (var j = 0; j < lookups.length; j++) {
$scope.availableTables.push(lookups[j].table);
}
// init dimension only when dimen
-// if(!$scope.model.dimensions.length){
+// if(!modelsManager.selectedModel.dimensions.length){
for(var i = 0;i<$scope.availableTables.length;i++){
- var tableInUse = _.some($scope.model.dimensions,function(item){
+ var tableInUse = _.some(modelsManager.selectedModel.dimensions,function(item){
return item.table == $scope.availableTables[i];
});
if(!tableInUse){
- $scope.model.dimensions.push(new Dimension($scope.availableTables[i]));
+ modelsManager.selectedModel.dimensions.push(new Dimension($scope.availableTables[i]));
}
}
// }
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/modelEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelEdit.js b/webapp/app/js/controllers/modelEdit.js
index dc9b87a..c483752 100644
--- a/webapp/app/js/controllers/modelEdit.js
+++ b/webapp/app/js/controllers/modelEdit.js
@@ -19,7 +19,7 @@
'use strict';
-KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $location, $templateCache, $interpolate, MessageService, TableService, CubeDescService, ModelService, loadingRequest, SweetAlert,$log,cubeConfig,CubeDescModel,ModelDescService,MetaModel,TableModel,ProjectService,ProjectModel) {
+KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $location, $templateCache, $interpolate, MessageService, TableService, CubeDescService, ModelService, loadingRequest, SweetAlert,$log,cubeConfig,CubeDescModel,ModelDescService,MetaModel,TableModel,ProjectService,ProjectModel,modelsManager) {
//add or edit ?
var absUrl = $location.absUrl();
$scope.modelMode = absUrl.indexOf("/models/add")!=-1?'addNewModel':absUrl.indexOf("/models/edit")!=-1?'editExistModel':'default';
@@ -29,6 +29,8 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
$location.path("/models");
}
+ $scope.modelsManager = modelsManager;
+
$scope.cubeConfig = cubeConfig;
$scope.getPartitonColumns = function(tableName){
@@ -74,11 +76,11 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
var modelName = $routeParams.modelName;
ModelDescService.get({model_name: modelName}, function (model) {
if (model) {
- $scope.model = model;
- $scope.model.project = ProjectModel.getProjectByCubeModel(modelName);
+ modelsManager.selectedModel = model;
+ modelsManager.selectedModel.project = ProjectModel.getProjectByCubeModel(modelName);
if(!ProjectModel.getSelectedProject()){
- ProjectModel.setSelectedProject($scope.model.project);
+ ProjectModel.setSelectedProject(modelsManager.selectedModel.project);
TableModel.aceSrcTbLoaded();
}
@@ -95,26 +97,26 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
} else {
MetaModel.initModel();
- $scope.model = MetaModel.getMetaModel();
- $scope.model.project = ProjectModel.getSelectedProject();
+ modelsManager.selectedModel = MetaModel.getMetaModel();
+ modelsManager.selectedModel.project = ProjectModel.getSelectedProject();
}
$scope.prepareModel = function () {
// generate column family
- if ($scope.model.partition_desc.partition_date_column!=null&&($scope.model.partition_desc.partition_date_start|$scope.model.partition_desc.partition_date_start==0)) {
- var dateStart = new Date($scope.model.partition_desc.partition_date_start);
+ if (modelsManager.selectedModel.partition_desc.partition_date_column!=null&&(modelsManager.selectedModel.partition_desc.partition_date_start|modelsManager.selectedModel.partition_desc.partition_date_start==0)) {
+ var dateStart = new Date(modelsManager.selectedModel.partition_desc.partition_date_start);
dateStart = (dateStart.getFullYear() + "-" + (dateStart.getMonth() + 1) + "-" + dateStart.getDate());
//switch selected time to utc timestamp
- $scope.model.partition_desc.partition_date_start = new Date(moment.utc(dateStart, "YYYY-MM-DD").format()).getTime();
+ modelsManager.selectedModel.partition_desc.partition_date_start = new Date(moment.utc(dateStart, "YYYY-MM-DD").format()).getTime();
}
- if($scope.model.partition_desc.partition_date_column==null){
- $scope.model.partition_desc.partition_date_start=null;
+ if(modelsManager.selectedModel.partition_desc.partition_date_column==null){
+ modelsManager.selectedModel.partition_desc.partition_date_start=null;
}
- $scope.state.project = $scope.model.project;
+ $scope.state.project = modelsManager.selectedModel.project;
var _model = angular.copy($scope.model);
delete _model.project;
$scope.state.modelSchema = angular.toJson(_model, true);
@@ -215,17 +217,17 @@ KylinApp.controller('ModelEditCtrl', function ($scope, $q, $routeParams, $locati
// reverse the date
$scope.saveModelRollBack = function (){
- if($scope.model.partition_desc.partition_date_start==0){
- $scope.model.partition_desc.partition_date_start = null;
+ if(modelsManager.selectedModel.partition_desc.partition_date_start==0){
+ modelsManager.selectedModel.partition_desc.partition_date_start = null;
}
- if($scope.model&&($scope.model.partition_desc.partition_date_start||$scope.model.partition_desc.partition_date_start==0))
+ if($scope.model&&(modelsManager.selectedModel.partition_desc.partition_date_start||modelsManager.selectedModel.partition_desc.partition_date_start==0))
{
- $scope.model.partition_desc.partition_date_start+=new Date().getTimezoneOffset()*60000;
+ modelsManager.selectedModel.partition_desc.partition_date_start+=new Date().getTimezoneOffset()*60000;
}
};
$scope.removeTableDimensions = function(tableIndex){
- $scope.model.dimensions.splice(tableIndex,1);
+ modelsManager.selectedModel.dimensions.splice(tableIndex,1);
}
$scope.$watch('projectModel.selectedProject', function (newValue, oldValue) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/modelSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelSchema.js b/webapp/app/js/controllers/modelSchema.js
index 17a3b06..a2126e8 100644
--- a/webapp/app/js/controllers/modelSchema.js
+++ b/webapp/app/js/controllers/modelSchema.js
@@ -18,9 +18,9 @@
'use strict';
-KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserService, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,$log,SweetAlert) {
+KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserService, ProjectService, AuthenticationService,$filter,ModelService,MetaModel,CubeDescModel,CubeList,TableModel,ProjectModel,$log,SweetAlert,modelsManager) {
- $log.info($scope.model);
+ $scope.modelsManager = modelsManager;
$scope.projects = [];
$scope.newDimension = null;
@@ -135,7 +135,7 @@ KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserServi
*/
$scope.check_data_model = function(){
var errors = [];
-// if(!$scope.model.lookups.length){
+// if(!modelsManager.selectedModel.lookups.length){
// errors.push("No lookup table defined");
// }
var errorInfo = "";
@@ -158,10 +158,10 @@ KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserServi
$scope.check_model_dimensions = function(){
var errors = [];
- if(!$scope.model.dimensions.length){
+ if(!modelsManager.selectedModel.dimensions.length){
errors.push("No dimensions defined.");
}
- angular.forEach($scope.model.dimensions,function(_dimension){
+ angular.forEach(modelsManager.selectedModel.dimensions,function(_dimension){
if(!_dimension.columns||!_dimension.columns.length){
errors.push("No dimension columns defined for Table["+_dimension.table+"]");
}
@@ -186,7 +186,7 @@ KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserServi
$scope.check_model_measure = function(){
var errors = [];
- if(!$scope.model.metrics||!$scope.model.metrics.length){
+ if(!modelsManager.selectedModel.metrics||!modelsManager.selectedModel.metrics.length){
errors.push("Please define your metrics.");
}
var errorInfo = "";
@@ -203,7 +203,7 @@ KylinApp.controller('ModelSchemaCtrl', function ($scope, QueryService, UserServi
};
$scope.check_model_setting = function(){
var errors = [];
- if($scope.model.partition_desc.partition_date_column!=null&& $scope.model.partition_desc.partition_date_start==null){
+ if(modelsManager.selectedModel.partition_desc.partition_date_column!=null&& modelsManager.selectedModel.partition_desc.partition_date_start==null){
errors.push("Please indicate start date when partition date column selected.");
}
var errorInfo = "";
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/controllers/models.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/models.js b/webapp/app/js/controllers/models.js
index 557be9c..be7d827 100644
--- a/webapp/app/js/controllers/models.js
+++ b/webapp/app/js/controllers/models.js
@@ -18,11 +18,9 @@
'use strict';
-KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location, $window,$modal, MessageService, CubeDescService, CubeService, JobService, UserService, ProjectService,SweetAlert,loadingRequest,$log,modelConfig,ProjectModel,ModelService,MetaModel,ModelList) {
- //selected model
- $scope.model = {};
+KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location, $window,$modal, MessageService, CubeDescService, CubeService, JobService, UserService, ProjectService,SweetAlert,loadingRequest,$log,modelConfig,ProjectModel,ModelService,MetaModel,modelsManager,cubesManager) {
+
//tree data
- $scope.models_treedata=[];
$scope.cubeSelected = false;
$scope.cube = {};
@@ -33,9 +31,10 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
$scope.showModels = showModel;
}
- $scope.modelList = ModelList;
+ $scope.modelsManager = modelsManager;
+ $scope.cubesManager = cubesManager;
$scope.modelConfig = modelConfig;
- ModelList.removeAll();
+ modelsManager.removeAll();
$scope.loading = false;
$scope.action = {};
$scope.window = 0.68 * $window.innerHeight;
@@ -52,8 +51,6 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
defer.resolve([]);
return defer.promise;
}
-// offset = (!!offset) ? offset : null;
-// limit = (!!limit) ? limit : null;
var queryParam = {};
if ($scope.listParams.modelName) {
@@ -63,7 +60,7 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
$scope.loading = true;
- ModelList.list(queryParam).then(function(resp){
+ modelsManager.list(queryParam).then(function(resp){
$scope.loading = false;
defer.resolve(resp);
},function(resp){
@@ -74,80 +71,38 @@ KylinApp.controller('ModelsCtrl', function ($scope, $q, $routeParams, $location,
return defer.promise;
};
+ //add ref for selectedModel
+// $scope.model = modelsManager.selectedModel;
+// $scope.cubeSelected = modelsManager.cubeSelected;
+// $scope.cube = modelsManager.selectedCube;
+// $scope.cubeMetaFrame =modelsManager.cubeDetail;
+// $scope.cube={detail: modelsManager.cubeDetail};
+// $scope.metaModel = {model:modelsManager.curModel};
+
$scope.init = function(){
- $scope.list().then(function(resp){
- $scope.models_treedata = [];
- angular.forEach(ModelList.models,function(model){
- var _model = {
- label:model.name,
- noLeaf:true,
- data:model,
- onSelect:function(branch){
- // set selected model
- $scope.model=branch.data;
- $scope.cubeSelected = false;
- }
- };
- var _children = [];
- angular.forEach(model.cubes,function(cube){
- _children.push(
- {
- label:cube.name,
- data:cube,
- onSelect:function(branch){
- $log.info("cube selected:"+branch.data.name);
- $scope.cubeSelected = true;
-// $scope.cubeMetaFrame = branch.data;
- $scope.cube = branch.data;
- $scope.listAccess(cube, 'CubeInstance');
-
- CubeDescService.get({cube_name: cube.name}, {}, function (detail) {
- if (detail.length > 0&&detail[0].hasOwnProperty("name")) {
- //cubeMetaFrame for cube view and edit
- $scope.cubeMetaFrame = detail[0];
- //for show detail info
- $scope.cube.detail = detail[0];
- //add model info
- $scope.metaModel ={
- model : ModelList.getModelByCube(cube.name)
- }
- }else{
- SweetAlert.swal('Oops...', "No cube detail info loaded.", 'error');
- }
- }, function (e) {
- if(e.data&& e.data.exception){
- var message =e.data.exception;
- var msg = !!(message) ? message : 'Failed to take action.';
- SweetAlert.swal('Oops...', msg, 'error');
- }else{
- SweetAlert.swal('Oops...', "Failed to take action.", 'error');
- }
- });
-
-
-
- // set selecte model
- }
- }
- );
- });
- if(_children.length){
- _model.children = _children;
- }
- $scope.models_treedata.push(_model);
- });
- $scope.models_treedata = _.sortBy($scope.models_treedata, function (i) { return i.label.toLowerCase(); });
+ var queryParam = {};
+ if ($scope.listParams.modelName) {
+ queryParam.modelName = $scope.listParams.modelName;
+ }
+ queryParam.projectName = $scope.projectModel.selectedProject;
+
+ modelsManager.generatorTreeData(queryParam).then(function(resp){
+// $scope.models_treedata = resp;
});
+
};
$scope.$watch('projectModel.selectedProject', function (newValue, oldValue) {
- ModelList.removeAll();
+ modelsManager.removeAll();
//init selected model
- $scope.model = {};
+// $scope.model = {};
+ modelsManager.selectedModel;
$scope.init();
+
});
+
$scope.status = {
isopen: true
};
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/model/cubesManager.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/cubesManager.js b/webapp/app/js/model/cubesManager.js
index 6ba303f..f8e9cd8 100644
--- a/webapp/app/js/model/cubesManager.js
+++ b/webapp/app/js/model/cubesManager.js
@@ -19,4 +19,8 @@
// TODO add cubes manager
KylinApp.service('cubesManager',function(){
+ this.currentCube = {};
+
+ this.cubeMetaFrame={};
+
})
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/model/modelList.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/modelList.js b/webapp/app/js/model/modelList.js
deleted file mode 100644
index 388cabc..0000000
--- a/webapp/app/js/model/modelList.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-KylinApp.service('ModelList',function(ModelService,CubeService,$q,AccessService,ProjectModel,$log){
- var _this = this;
- this.models=[];
-
- this.list = function(queryParam){
-
- var defer = $q.defer();
- var cubeDetail = [];
- var modelPermission = [];
- ModelService.list(queryParam, function (_models) {
-
- angular.forEach(_models, function (model, index) {
- $log.info("Add model permission info");
- modelPermission.push(
- AccessService.list({type: "DataModelDesc", uuid: model.uuid}, function (accessEntities) {
- model.accessEntities = accessEntities;
- }).$promise
- )
- $log.info("Add cube info to model ,not detail info");
- cubeDetail.push(
-// CubeService.list({offset: 0, limit: 70,modelName:model.name}, function (_cubes) {
- CubeService.list({modelName:model.name}, function (_cubes) {
- model.cubes = _cubes;
- }).$promise
- );
-
- model.project = ProjectModel.getProjectByCubeModel(model.name);
- });
- $q.all(cubeDetail,modelPermission).then(
- function(result){
- _models = _.filter(_models,function(models){return models.name!=undefined});
- _this.models = _this.models.concat(_models);
- defer.resolve(_this.models);
- }
- );
- },function(){
- defer.reject("Failed to load models");
- });
- return defer.promise;
-
- };
-
-
- this.removemodels = function(models){
- var modelsIndex = _this.models.indexOf(models);
- if (modelsIndex > -1) {
- _this.models.splice(modelsIndex, 1);
- }
- }
-
- this.getModel = function(modelName){
- return _.find(_this.models,function(unit){
- return unit.name == modelName;
- })
- }
-
- this.getModels = function(){
- return _this.models;
- }
-
- this.getModelByCube = function(cubeName){
- return _.find(_this.models,function(model){
- return _.some(model.cubes,function(_cube){
- return _cube.name == cubeName;
- });
- })
- }
-
- this.removeAll = function(){
- _this.models = [];
- };
-
-});
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/js/model/modelsManager.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/modelsManager.js b/webapp/app/js/model/modelsManager.js
new file mode 100644
index 0000000..71b77a4
--- /dev/null
+++ b/webapp/app/js/model/modelsManager.js
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+KylinApp.service('modelsManager',function(ModelService,CubeService,$q,AccessService,ProjectModel,$log,CubeDescService,SweetAlert,cubesManager){
+ var _this = this;
+ this.models=[];
+ this.modelTreeData = [];
+ this.selectedModel={};
+ this.cubeModel={};
+ this.cubeSelected = false;
+
+ //list models and complemete cube,access info
+ this.list = function(queryParam){
+
+ var defer = $q.defer();
+ var cubeDetail = [];
+ var modelPermission = [];
+ ModelService.list(queryParam, function (_models) {
+
+ angular.forEach(_models, function (model, index) {
+ $log.info("Add model permission info");
+ modelPermission.push(
+ AccessService.list({type: "DataModelDesc", uuid: model.uuid}, function (accessEntities) {
+ model.accessEntities = accessEntities;
+ }).$promise
+ )
+ $log.info("Add cube info to model ,not detail info");
+ cubeDetail.push(
+// CubeService.list({offset: 0, limit: 70,modelName:model.name}, function (_cubes) {
+ CubeService.list({modelName:model.name}, function (_cubes) {
+ model.cubes = _cubes;
+ }).$promise
+ );
+
+ model.project = ProjectModel.getProjectByCubeModel(model.name);
+ });
+ $q.all(cubeDetail,modelPermission).then(
+ function(result){
+ _models = _.filter(_models,function(models){return models.name!=undefined});
+ _this.models = _this.models.concat(_models);
+ defer.resolve(_this.models);
+ }
+ );
+ },function(){
+ defer.reject("Failed to load models");
+ });
+ return defer.promise;
+
+ };
+
+ //generator tree data info
+ this.generatorTreeData = function(queryParam){
+ var defer = $q.defer();
+ _this.list(queryParam).then(function(resp){
+ _this.modelTreeData = [];
+ angular.forEach(_this.models,function(model){
+ var _model = {
+ label:model.name,
+ noLeaf:true,
+ data:model,
+ onSelect:function(branch){
+ // set selected model
+ _this.selectedModel = branch.data;
+ _this.cubeSelected = false;
+ }
+ };
+ var _children = [];
+ angular.forEach(model.cubes,function(cube){
+ _children.push(
+ {
+ label:cube.name,
+ data:cube,
+ onSelect:function(branch){
+ $log.info("cube selected:"+branch.data.name);
+ _this.cubeSelected = true;
+// $scope.cubeMetaFrame = branch.data;
+// _this.selectedCube = branch.data;
+ cubesManager.currentCube = branch.data;
+ _this.listAccess(cubesManager.currentCube, 'CubeInstance');
+
+ CubeDescService.get({cube_name: cube.name}, {}, function (detail) {
+ if (detail.length > 0&&detail[0].hasOwnProperty("name")) {
+ //cubeMetaFrame for cube view and edit
+// $scope.cubeMetaFrame = detail[0];
+ //for show detail info
+// $scope.cube.detail = detail[0];
+ //add model info
+ cubesManager.currentCube.detail = detail[0];
+ cubesManager.cubeMetaFrame = detail[0];
+ _this.cubeModel = _this.getModelByCube(cubesManager.currentCube.name);
+ }else{
+ SweetAlert.swal('Oops...', "No cube detail info loaded.", 'error');
+ }
+ }, function (e) {
+ if(e.data&& e.data.exception){
+ var message =e.data.exception;
+ var msg = !!(message) ? message : 'Failed to take action.';
+ SweetAlert.swal('Oops...', msg, 'error');
+ }else{
+ SweetAlert.swal('Oops...', "Failed to take action.", 'error');
+ }
+ });
+ // set selecte model
+ }
+ }
+ );
+ });
+ if(_children.length){
+ _model.children = _children;
+ }
+ _this.modelTreeData.push(_model);
+ });
+ _this.modelTreeData = _.sortBy(_this.modelTreeData, function (i) { return i.label.toLowerCase(); });
+ defer.resolve(_this.modelTreeData);
+ });
+ return defer.promise;
+ };
+
+
+ this.removemodels = function(models){
+ var modelsIndex = _this.models.indexOf(models);
+ if (modelsIndex > -1) {
+ _this.models.splice(modelsIndex, 1);
+ }
+ }
+
+ this.getModel = function(modelName){
+ return _.find(_this.models,function(unit){
+ return unit.name == modelName;
+ })
+ }
+
+ this.getModels = function(){
+ return _this.models;
+ }
+
+ this.getModelByCube = function(cubeName){
+ return _.find(_this.models,function(model){
+ return _.some(model.cubes,function(_cube){
+ return _cube.name == cubeName;
+ });
+ })
+ }
+
+ this.removeAll = function(){
+ _this.models = [];
+ };
+
+ this.listAccess = function (entity, type) {
+ var defer = $q.defer();
+
+ entity.accessLoading = true;
+ AccessService.list({type: type, uuid: entity.uuid}, function (accessEntities) {
+ entity.accessLoading = false;
+ entity.accessEntities = accessEntities;
+ defer.resolve();
+ });
+
+ return defer.promise;
+ };
+
+
+});
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubeDesigner/advanced_settings.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/advanced_settings.html b/webapp/app/partials/cubeDesigner/advanced_settings.html
index ba2e20d..e841a1d 100755
--- a/webapp/app/partials/cubeDesigner/advanced_settings.html
+++ b/webapp/app/partials/cubeDesigner/advanced_settings.html
@@ -22,7 +22,7 @@
<div class="form-group">
<h4 style="margin-left:42px">Aggregation Groups</h4>
<table style="margin-left:42px; width:92%"
- ng-if="cubeMetaFrame.rowkey.aggregation_groups.length > 0"
+ ng-if="cubesManager.cubeMetaFrame.rowkey.aggregation_groups.length > 0"
class="table table-hover list">
<tr class="row">
<th class="col-xs-1">ID</th>
@@ -30,7 +30,7 @@
<th ng-if="state.mode=='edit'" class="col-xs-1"></th>
</tr>
- <tr ng-repeat="aggregation_groups in cubeMetaFrame.rowkey.aggregation_groups" class="row">
+ <tr ng-repeat="aggregation_groups in cubesManager.cubeMetaFrame.rowkey.aggregation_groups" class="row">
<td class="col-xs-1">
<!-- ID -->
<b>{{($index + 1)}}</b>
@@ -39,15 +39,15 @@
<!-- Dimensions -->
<select ng-if="state.mode=='edit'" style="width: 100%"
ng-model="aggregation_groups" chosen multiple
- ng-change="refreshAggregationGroup(cubeMetaFrame.rowkey.aggregation_groups, $index, aggregation_groups)"
- ng-options="rowkey_column.column as rowkey_column.column for rowkey_column in cubeMetaFrame.rowkey.rowkey_columns">
+ ng-change="refreshAggregationGroup(cubesManager.cubeMetaFrame.rowkey.aggregation_groups, $index, aggregation_groups)"
+ ng-options="rowkey_column.column as rowkey_column.column for rowkey_column in cubesManager.cubeMetaFrame.rowkey.rowkey_columns">
<option value=""></option>
</select>
<p ng-if="state.mode=='view'" style="word-wrap: break-word; word-break: normal;max-width: 1000px ">{{aggregation_groups}}</p>
</td>
<td ng-if="state.mode=='edit'" class="col-xs-1">
<button class="btn btn-xs btn-info"
- ng-click="removeElement(cubeMetaFrame.rowkey.aggregation_groups, aggregation_groups)"><i
+ ng-click="removeElement(cubesManager.cubeMetaFrame.rowkey.aggregation_groups, aggregation_groups)"><i
class="fa fa-minus"></i>
</button>
</td>
@@ -65,7 +65,7 @@
<div class="form-group">
<h4 style="margin-left:42px">Rowkeys</h4>
<table style="margin-left:42px; width:92%"
- ng-if="cubeMetaFrame.rowkey.rowkey_columns.length > 0"
+ ng-if="cubesManager.cubeMetaFrame.rowkey.rowkey_columns.length > 0"
class="table table-hover list"
>
<thead>
@@ -79,9 +79,9 @@
</tr>
</thead>
- <tbody ui-sortable="state.mode=='edit'" ng-model="cubeMetaFrame.rowkey.rowkey_columns">
+ <tbody ui-sortable="state.mode=='edit'" ng-model="cubesManager.cubeMetaFrame.rowkey.rowkey_columns">
- <tr ng-repeat="rowkey_column in cubeMetaFrame.rowkey.rowkey_columns" ng-class="state.mode=='edit'?'sort-item':''">
+ <tr ng-repeat="rowkey_column in cubesManager.cubeMetaFrame.rowkey.rowkey_columns" ng-class="state.mode=='edit'?'sort-item':''">
<td>
<!-- ID -->
@@ -134,7 +134,7 @@
<td ng-if="state.mode=='edit'">
<button class="btn btn-xs btn-info"
- ng-click="removeElement(cubeMetaFrame.rowkey.rowkey_columns, rowkey_column)"><i
+ ng-click="removeElement(cubesManager.cubeMetaFrame.rowkey.rowkey_columns, rowkey_column)"><i
class="fa fa-minus"></i>
</button>
</td>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubeDesigner/dimensions.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/dimensions.html b/webapp/app/partials/cubeDesigner/dimensions.html
index 94ce1fd..c2da223 100644
--- a/webapp/app/partials/cubeDesigner/dimensions.html
+++ b/webapp/app/partials/cubeDesigner/dimensions.html
@@ -47,7 +47,7 @@
</span>
</div>
</div>
- <table class="table table-striped table-hover" ng-if="cubeMetaFrame.dimensions.length > 0">
+ <table class="table table-striped table-hover" ng-if="cubesManager.cubeMetaFrame.dimensions.length > 0">
<thead>
<tr>
<th>ID</th>
@@ -59,7 +59,7 @@
</tr>
</thead>
<tbody class="cube-dimension">
- <tr ng-repeat="dimension in cubeMetaFrame.dimensions | filter:dimState.filter track by $index">
+ <tr ng-repeat="dimension in cubesManager.cubeMetaFrame.dimensions | filter:dimState.filter track by $index">
<!--ID -->
<td>
<b>{{dimension.id = ($index + 1)}}</b>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubeDesigner/info.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/info.html b/webapp/app/partials/cubeDesigner/info.html
index 1833818..7fda22a 100644
--- a/webapp/app/partials/cubeDesigner/info.html
+++ b/webapp/app/partials/cubeDesigner/info.html
@@ -29,12 +29,12 @@
<input disabled ng-if="state.mode=='edit'" name="model_name" type="text" required class="form-control"
placeholder="You can use letters, numbers, and '_'"
ng-maxlength=100 ng-pattern="/^\w+$/"
- ng-model="cubeMetaFrame.model_name"/>
+ ng-model="cubesManager.cubeMetaFrame.model_name"/>
<small class="help-block" ng-show="forms.cube_info_form.model_name.$error.required && (forms.cube_info_form.model_name.$dirty||forms.cube_info_form.$sbumitted)">Model name is required.</small>
<small class="help-block" ng-show="!forms.cube_info_form.model_name.$error.required&&forms.cube_info_form.model_name.$invalid && (forms.cube_info_form.model_name.$dirty||forms.cube_info_form.$sbumitted)">Model name is invalid.</small>
<span ng-if="state.mode=='view'">
- {{cubeMetaFrame.model_name}}
+ {{cubesManager.cubeMetaFrame.model_name}}
</span>
</div>
</div>
@@ -48,13 +48,13 @@
</label>
<div class="col-xs-12 col-sm-6" ng-class="{'has-error':forms.cube_info_form.cube_name.$invalid && (forms.cube_info_form.cube_name.$dirty||forms.cube_info_form.cube_name.$sbumitted)}">
<input ng-if="state.mode=='edit'" name="cube_name" type="text" class="form-control"
- ng-model="cubeMetaFrame.name" required
+ ng-model="cubesManager.cubeMetaFrame.name" required
placeholder="You can use letters, numbers, and '_'"
ng-maxlength=100 ng-pattern="/^\w+$/" />
<small class="help-block" ng-show="forms.cube_info_form.cube_name.$error.required && (forms.cube_info_form.cube_name.$dirty||forms.cube_info_form.$sbumitted)">Cube name is required.</small>
<small class="help-block" ng-show="!forms.cube_info_form.cube_name.$error.required&&forms.cube_info_form.cube_name.$invalid && (forms.cube_info_form.cube_name.$dirty||forms.cube_info_form.$sbumitted)">Cube name is invalid.</small>
- <span ng-if="state.mode=='view'">{{cubeMetaFrame.name}}</span>
+ <span ng-if="state.mode=='view'">{{cubesManager.cubeMetaFrame.name}}</span>
</div>
</div>
</div>
@@ -67,8 +67,8 @@
</label>
<div class="col-xs-12 col-sm-6">
<input type="text" class="form-control" placeholder="Comma Separated"
- ng-model="cubeMetaFrame.notify_list" ng-if="state.mode=='edit'" ng-list>
- <span ng-if="state.mode=='view'">{{cubeMetaFrame.notify_list}}</span>
+ ng-model="cubesManager.cubeMetaFrame.notify_list" ng-if="state.mode=='edit'" ng-list>
+ <span ng-if="state.mode=='view'">{{cubesManager.cubeMetaFrame.notify_list}}</span>
</div>
</div>
</div>
@@ -81,8 +81,8 @@
</label>
<div class="col-xs-12 col-sm-6">
<textarea ng-if="state.mode=='edit'" class="form-control box-default"
- name="comment" id="comment" ng-model="cubeMetaFrame.description"></textarea>
- <span ng-if="state.mode=='view'">{{cubeMetaFrame.description}}</span>
+ name="comment" id="comment" ng-model="cubesManager.cubeMetaFrame.description"></textarea>
+ <span ng-if="state.mode=='view'">{{cubesManager.cubeMetaFrame.description}}</span>
</div>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index c426e95..c45ae8e 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -18,7 +18,7 @@
<!-- Measures Summary -->
<ng-form name="forms.cube_measure_form">
- <div class="dataTables_wrapper form-inline no-footer" ng-if="cubeMetaFrame.measures.length > 0">
+ <div class="dataTables_wrapper form-inline no-footer" ng-if="cubesManager.cubeMetaFrame.measures.length > 0">
<div class="row">
<span class="nav-search input-icon input-icon-right" style="margin-left: 22px;">
<input type="text" placeholder="Filter ..." class="nav-search-input" ng-model="state.dimensionFilter"/>
@@ -38,7 +38,7 @@
</tr>
</thead>
<tbody>
- <tr ng-repeat="measure in cubeMetaFrame.measures | filter: state.measureFilter track by $index">
+ <tr ng-repeat="measure in cubesManager.cubeMetaFrame.measures | filter: state.measureFilter track by $index">
<td>
<!--ID -->
<b>{{measure.id = ($index + 1)}}</b>
@@ -69,7 +69,7 @@
<i class="fa fa-pencil"></i>
</button>
<!--Remove Button -->
- <button class="btn btn-xs btn-danger" ng-click="removeElement(cubeMetaFrame.measures, measure)">
+ <button class="btn btn-xs btn-danger" ng-click="removeElement(cubesManager.cubeMetaFrame.measures, measure)">
<i class="fa fa-trash-o"></i>
</button>
</td>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubeDesigner/overview.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/overview.html b/webapp/app/partials/cubeDesigner/overview.html
index 4bf14ff..28f02c3 100644
--- a/webapp/app/partials/cubeDesigner/overview.html
+++ b/webapp/app/partials/cubeDesigner/overview.html
@@ -29,7 +29,7 @@
<!--Cube Name-->
<tr>
<th>Cube Name</th>
- <td class="tb-breakword">{{cubeMetaFrame.name}}</td>
+ <td class="tb-breakword">{{cubesManager.cubeMetaFrame.name}}</td>
</tr>
<!--Fact Table-->
<tr>
@@ -46,12 +46,12 @@
<!--Dimensions-->
<tr>
<th>Dimensions</th>
- <td>{{cubeMetaFrame.dimensions.length}}</td>
+ <td>{{cubesManager.cubeMetaFrame.dimensions.length}}</td>
</tr>
<!--Measures-->
<tr>
<th>Measures</th>
- <td>{{cubeMetaFrame.measures.length}}</td>
+ <td>{{cubesManager.cubeMetaFrame.measures.length}}</td>
</tr>
</tbody>
</table>
@@ -68,7 +68,7 @@
</div>
<div class="box-body">
<p class="muted">
- {{cubeMetaFrame.description}}
+ {{cubesManager.cubeMetaFrame.description}}
</p>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/cubes/cube_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubes/cube_detail.html b/webapp/app/partials/cubes/cube_detail.html
index 93084e3..ae1ed5b 100755
--- a/webapp/app/partials/cubes/cube_detail.html
+++ b/webapp/app/partials/cubes/cube_detail.html
@@ -18,120 +18,120 @@
<div ng-controller="CubeCtrl" class="nav-tabs-custom" style="margin-top:40px;">
<ul class="nav nav-tabs">
- <li class="{{(!cube.visiblePage || cube.visiblePage=='metadata')? 'active':''}}">
- <a href="" ng-click="cube.visiblePage='metadata'">Grid</a>
+ <li class="{{(!cubesManager.currentCube.visiblePage || cubesManager.currentCube.visiblePage=='metadata')? 'active':''}}">
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='metadata'">Grid</a>
</li>
- <!--<li class="{{cube.visiblePage=='graph'? 'active':''}}">-->
- <!--<a href="" ng-click="cube.visiblePage='graph';buildGraph(cube);">Visualization</a>-->
+ <!--<li class="{{cubesManager.currentCube.visiblePage=='graph'? 'active':''}}">-->
+ <!--<a href="" ng-click="cubesManager.currentCube.visiblePage='graph';buildGraph(cubesManager.currentCube);">Visualization</a>-->
<!--</li>-->
- <li class="{{cube.visiblePage=='sql'? 'active':''}}">
- <a href="" ng-click="cube.visiblePage='sql';getCubeSql(cube)">SQL</a>
+ <li class="{{cubesManager.currentCube.visiblePage=='sql'? 'active':''}}">
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='sql';getCubeSql(cubesManager.currentCube)">SQL</a>
</li>
- <li class="{{cube.visiblePage=='json'? 'active':''}}"
- ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cube, 16) && !newAccess">
- <a href="" ng-click="cube.visiblePage='json';">JSON(Cube)</a>
+ <li class="{{cubesManager.currentCube.visiblePage=='json'? 'active':''}}"
+ ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cubesManager.currentCube, 16) && !newAccess">
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='json';">JSON(Cube)</a>
</li>
- <!--<li class="{{cube.visiblePage=='json_model'? 'active':''}}"-->
+ <!--<li class="{{cubesManager.currentCube.visiblePage=='json_model'? 'active':''}}"-->
<!--ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cube, 16) && !newAccess">-->
- <!--<a href="" ng-click="cube.visiblePage='json_model';">JSON(Model)</a>-->
+ <!--<a href="" ng-click="cubesManager.currentCube.visiblePage='json_model';">JSON(Model)</a>-->
<!--</li>-->
- <li class="{{cube.visiblePage=='access'? 'active':''}}">
- <a href="" ng-click="cube.visiblePage='access';listAccess(cube, 'CubeInstance');">Access</a>
+ <li class="{{cubesManager.currentCube.visiblePage=='access'? 'active':''}}">
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='access';listAccess(cubesManager.currentCube, 'CubeInstance');">Access</a>
</li>
- <li class="{{cube.visiblePage=='notification'? 'active':''}}"
- ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cube, 16) && !newAccess">
- <a href="" ng-click="cube.visiblePage='notification';getNotifyListString(cube);">Notification</a>
+ <li class="{{cubesManager.currentCube.visiblePage=='notification'? 'active':''}}"
+ ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cubesManager.currentCube, 16) && !newAccess">
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='notification';getNotifyListString(cubesManager.currentCube);">Notification</a>
</li>
- <li class="{{cube.visiblePage=='hbase'? 'active':''}}"
+ <li class="{{cubesManager.currentCube.visiblePage=='hbase'? 'active':''}}"
ng-if="userService.hasRole('ROLE_ADMIN')">
- <a href="" ng-click="cube.visiblePage='hbase';getHbaseInfo(cube)">HBase</a>
+ <a href="" ng-click="cubesManager.currentCube.visiblePage='hbase';getHbaseInfo(cubesManager.currentCube)">HBase</a>
</li>
- <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cube, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
+ <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(cubesManager.currentCube, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
<a class="dropdown-toggle highlight-bule" data-toggle="dropdown" href="#" aria-expanded="true">
<i class="fa fa-cubes">Action</i> <span class="caret"></span>
</a>
<ul class="dropdown-menu">
- <li ng-if="cube.status=='DISABLED' && userService.hasRole('ROLE_ADMIN') ">
- <a ng-click="dropCube(cube)" tooltip="Drop the cube, related jobs and data permanently.">Drop</a></li>
- <li ng-if="cube.status=='DISABLED' && (userService.hasRole('ROLE_ADMIN') || hasPermission(cube, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))">
- <a href="cubes/edit/{{cube.name}}">Edit</a></li>
- <li><a ng-click="startJobSubmit(cube);">Build</a></li>
- <li><a ng-click="startRefresh(cube)">Refresh</a></li>
- <li><a ng-click="startMerge(cube)">Merge</a></li>
- <li ng-if="cube.status!='DISABLED'"><a ng-click="disable(cube)">Disable</a></li>
- <li ng-if="cube.status=='DISABLED'"><a ng-click="enable(cube)">Enable</a></li>
- <li ng-if="cube.status=='DISABLED'"><a ng-click="purge(cube)">Purge</a></li>
+ <li ng-if="cubesManager.currentCube.status=='DISABLED' && userService.hasRole('ROLE_ADMIN') ">
+ <a ng-click="dropCube(cubesManager.currentCube)" tooltip="Drop the cube, related jobs and data permanently.">Drop</a></li>
+ <li ng-if="cubesManager.currentCube.status=='DISABLED' && (userService.hasRole('ROLE_ADMIN') || hasPermission(cubesManager.currentCube, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))">
+ <a href="cubes/edit/{{cubesManager.currentCube.name}}">Edit</a></li>
+ <li><a ng-click="startJobSubmit(cubesManager.currentCube);">Build</a></li>
+ <li><a ng-click="startRefresh(cubesManager.currentCube)">Refresh</a></li>
+ <li><a ng-click="startMerge(cubesManager.currentCube)">Merge</a></li>
+ <li ng-if="cubesManager.currentCube.status!='DISABLED'"><a ng-click="disable(cubesManager.currentCube)">Disable</a></li>
+ <li ng-if="cubesManager.currentCube.status=='DISABLED'"><a ng-click="enable(cubesManager.currentCube)">Enable</a></li>
+ <li ng-if="cubesManager.currentCube.status=='DISABLED'"><a ng-click="purge(cubesManager.currentCube)">Purge</a></li>
</ul>
</li>
</ul>
- <div class="cube-detail" ng-if="!cube.visiblePage || cube.visiblePage=='metadata'">
+ <div class="cube-detail" ng-if="!cubesManager.currentCube.visiblePage || cubesManager.currentCube.visiblePage=='metadata'">
<div ng-include="'partials/cubes/cube_schema.html'" ng-controller="CubeSchemaCtrl"
- ng-init="state={mode:'view', cubeName:cube.name}"></div>
+ ng-init="state={mode:'view', cubeName:cubesManager.currentCube.name}"></div>
</div>
- <div ng-show="cube.visiblePage=='sql'" class="cube-detail">
- <div ng-if="cube.sql">
- <pre style="background-color: white;border: 0px">{{cube.sql}}</pre>
+ <div ng-show="cubesManager.currentCube.visiblePage=='sql'" class="cube-detail">
+ <div ng-if="cubesManager.currentCube.sql">
+ <pre style="background-color: white;border: 0px">{{cubesManager.currentCube.sql}}</pre>
</div>
- <div ng-if="!cube.sql">
+ <div ng-if="!cubesManager.currentCube.sql">
<span calss="text-info">No SQL GENERATED.</span>
</div>
</div>
- <div ng-show="cube.visiblePage=='json'" class="cube-detail">
+ <div ng-show="cubesManager.currentCube.visiblePage=='json'" class="cube-detail">
<pre ng-if="!state.jsonEdit"
- style="background-color: white;border: 0px">{{angular.toJson(cleanStatus(cube.detail), true)}}</pre>
+ style="background-color: white;border: 0px">{{angular.toJson(cleanStatus(cubesManager.currentCube.detail), true)}}</pre>
</div>
- <!--<div ng-show="cube.visiblePage=='json_model'" class="cube-detail">-->
+ <!--<div ng-show="cubesManager.currentCube.visiblePage=='json_model'" class="cube-detail">-->
<!--<pre ng-if="!state.jsonEdit"-->
<!--style="background-color: white;border: 0px">{{angular.toJson(cleanStatus(model), true)}}</pre>-->
<!--</div>-->
- <!--<div ng-show="cube.visiblePage=='graph'" id="cube_graph_{{cube.name}}" class="cube-detail cube_graph">-->
+ <!--<div ng-show="cubesManager.currentCube.visiblePage=='graph'" id="cube_graph_{{cubesManager.currentCube.name}}" class="cube-detail cube_graph">-->
<!--</div>-->
- <div class="cube-detail" ng-if="cube.visiblePage=='access'">
+ <div class="cube-detail" ng-if="cubesManager.currentCube.visiblePage=='access'">
<div class="row">
<div class="col-xs-1"></div>
<div class="col-xs-10">
- <div ng-include src="'partials/common/access.html'" ng-init="entity=cube;type='CubeInstance';"></div>
+ <div ng-include src="'partials/common/access.html'" ng-init="entity=cubesManager.currentCube;type='CubeInstance';"></div>
</div>
<div class="col-xs-1"></div>
</div>
</div>
- <div class="cube-detail" ng-show="cube.visiblePage=='notification'">
+ <div class="cube-detail" ng-show="cubesManager.currentCube.visiblePage=='notification'">
<div style="margin: 15px;">
<form>
<h5>Notification List(Common Separated)</h5>
<div class="form-group">
- <input ng-model="cube.notifyListString" class="form-control" placeholder="Notification List..." />
+ <input ng-model="cubesManager.currentCube.notifyListString" class="form-control" placeholder="Notification List..." />
</div>
<div class="form-group">
- <button class="btn btn-primary btn-sm" ng-click="updateNotifyList(cube)">Save</button>
+ <button class="btn btn-primary btn-sm" ng-click="updateNotifyList(cubesManager.currentCube)">Save</button>
</div>
<div class="space-4"></div>
</form>
</div>
</div>
- <div class="cube-detail" ng-show="cube.visiblePage=='hbase'">
+ <div class="cube-detail" ng-show="cubesManager.currentCube.visiblePage=='hbase'">
<div style="margin: 15px;">
- <div ng-repeat="table in cube.hbase">
+ <div ng-repeat="table in cubesManager.currentCube.hbase">
<h5><b>HTable:</b> {{table.tableName}}</h5>
<ul>
<li>Region Count: <span class="red">{{table.regionCount}}</span></li>
<li>Size: <span class="red">{{table.tableSize | bytes:2}}</span></li>
</ul>
</div>
- <div ng-if="cube.hbase">
+ <div ng-if="cubesManager.currentCube.hbase">
<div class="hr hr8 hr-double hr-dotted"></div>
- <h5><b>Total Size:</b> <span class="red">{{cube.totalSize | bytes:2}}</span></h5>
+ <h5><b>Total Size:</b> <span class="red">{{cubesManager.currentCube.totalSize | bytes:2}}</span></h5>
</div>
- <div ng-if="cube.hbase.length == 0">
+ <div ng-if="cubesManager.currentCube.hbase.length == 0">
<h5>No HBase Info.</h5>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/jobs/job_merge.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/jobs/job_merge.html b/webapp/app/partials/jobs/job_merge.html
index c55b280..35f88fe 100644
--- a/webapp/app/partials/jobs/job_merge.html
+++ b/webapp/app/partials/jobs/job_merge.html
@@ -24,11 +24,11 @@
<div ng-if="metaModel.model.partition_desc.partition_date_column" class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
- <div ng-if="!!!(cube.segments) || cube.segments.length < 2">
+ <div ng-if="!!!(cubesManager.currentCube.segments) || cubesManager.currentCube.segments.length < 2">
<span class="text-info">NO SEGMENT TO MERGE.</span>
</div>
- <div ng-if="cube.segments.length >= 2" class="row">
- <table class="table table-striped list" ng-if="(cube.segments|filter: {status: 'NEW'}).length == 0">
+ <div ng-if="cubesManager.currentCube.segments.length >= 2" class="row">
+ <table class="table table-striped list" ng-if="(cubesManager.currentCube.segments|filter: {status: 'NEW'}).length == 0">
<tbody>
<tr>
<td>PARTITION DATE COLUMN</td>
@@ -38,8 +38,8 @@
<td>MERGE START SEGMENT</td>
<td>
<select ng-model="mergeStartSeg"
- ng-init="mergeStartSeg=cube.segments[0];mergeStartSelected(mergeStartSeg)"
- ng-options="segment as segment.name for segment in cube.segments"
+ ng-init="mergeStartSeg=cubesManager.currentCube.segments[0];mergeStartSelected(mergeStartSeg)"
+ ng-options="segment as segment.name for segment in cubesManager.currentCube.segments"
ng-change="mergeStartSelected(mergeStartSeg)">
</select>
</td>
@@ -48,8 +48,8 @@
<td>MERGE END SEGMENT</td>
<td>
<select ng-model="mergeEndSeg"
- ng-init="mergeEndSeg=cube.segments[cube.segments.length-1];mergeEndSelected(mergeEndSeg)"
- ng-options="segment as segment.name for segment in cube.segments"
+ ng-init="mergeEndSeg=cubesManager.currentCube.segments[cubesManager.currentCube.segments.length-1];mergeEndSelected(mergeEndSeg)"
+ ng-options="segment as segment.name for segment in cubesManager.currentCube.segments"
ng-change="mergeEndSelected(mergeEndSeg)">
</select>
</td>
@@ -103,7 +103,7 @@
</tbody>
</table>
- <div ng-if="(cube.segments|filter: {status: 'NEW'}).length > 0">
+ <div ng-if="(cubesManager.currentCube.segments|filter: {status: 'NEW'}).length > 0">
<span class="text-warning">There exists a build request of this cube, the job may be running or error. If you need a new build, please wait for its complete or discard it.</span>
</div>
</div>