You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/08/11 12:35:13 UTC

[kylin] branch master updated: KYLIN-4126 cube name validate code cause the wrong judge of streaming type

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new afe076a  KYLIN-4126 cube name validate code cause the wrong judge of streaming type
afe076a is described below

commit afe076a22b1876bbe551b1f7edb5f9fc68296c1e
Author: luguosheng1314 <55...@qq.com>
AuthorDate: Fri Aug 9 18:18:17 2019 +0800

    KYLIN-4126 cube name validate code cause the wrong judge of streaming type
---
 webapp/app/js/controllers/cubeSchema.js    | 109 +++++++++++++++--------------
 webapp/app/js/services/cubes.js            |   2 +-
 webapp/app/partials/cubes/cube_schema.html |   4 +-
 3 files changed, 58 insertions(+), 57 deletions(-)

diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js
index ff83180..3480ffa 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -260,76 +260,77 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
     }
 
   });
-
-    $scope.checkCubeForm = async function(stepIndex){
-      // do not check for Prev Step
-      if (stepIndex + 1 < $scope.curStep.step) {
-        return true;
+  $scope.nextStep = async function (stepIndex, cb) {
+    var validResult = await $scope.checkCubeForm(stepIndex);
+    if (validResult) {
+      if (typeof cb === 'function') {
+        cb(stepIndex)
       }
+    }
+  }
+  $scope.checkCubeForm = async function(stepIndex){
+    // do not check for Prev Step
+    if (stepIndex + 1 < $scope.curStep.step) {
+      return true;
+    }
 
-      if(!$scope.curStep.form){
-            return true;
-        }
-        if($scope.state.mode==='view'){
-            return true;
-        }
-        else{
-            //form validation
-            if($scope.forms[$scope.curStep.form].$invalid){
-                $scope.forms[$scope.curStep.form].$submitted = true;
-                return false;
-            }else{
-                //business rule check
-                switch($scope.curStep.form){
-                    case 'cube_info_form':
-                      var result =  await $scope.check_cube_info().then(function(res){
-                        return res.data
-                      });
-                      return result
-                      break;
-                    case 'cube_dimension_form':
-                        return $scope.check_cube_dimension();
-                        break;
-                    case 'cube_measure_form':
-                        return $scope.check_cube_measure();
-                        break;
-                    case 'cube_setting_form':
-                        return $scope.check_cube_setting();
-                    case 'cube_overwrite_prop_form':
-                        return $scope.cube_overwrite_prop_check();
-                    default:
-                        return true;
-                        break;
-                }
-            }
-        }
-    };
+    if(!$scope.curStep.form){
+          return true;
+      }
+      if($scope.state.mode==='view'){
+          return true;
+      }
+      else{
+          //form validation
+          if($scope.forms[$scope.curStep.form].$invalid){
+              $scope.forms[$scope.curStep.form].$submitted = true;
+              return false;
+          }else{
+              //business rule check
+              switch($scope.curStep.form){
+                  case 'cube_info_form':
+                    return await $scope.check_cube_info(); 
+                  case 'cube_dimension_form':
+                      return $scope.check_cube_dimension();
+                  case 'cube_measure_form':
+                      return $scope.check_cube_measure();
+                  case 'cube_setting_form':
+                      return $scope.check_cube_setting();
+                  case 'cube_overwrite_prop_form':
+                      return $scope.cube_overwrite_prop_check();
+                  default:
+                      return true;
+              }
+          }
+      }
+  };
 
   $scope.checkDuplicatedCubeName = function (cubeName) {
     return ($scope.allCubeNames.indexOf(cubeName.toUpperCase())) >= 0;
   }
 
   $scope.check_cube_info = function () {
+    // Update storage type according to the streaming table in model
+    if(TableModel.selectProjectTables.some(function(table) {
+      return (table.name === $scope.metaModel.model.fact_table && _.values(tableConfig.streamingSourceType).indexOf(table.source_type) > -1)
+    })) {
+      $scope.cubeMetaFrame.storage_type = 3;
+    } else {
+      $scope.cubeMetaFrame.storage_type = 2;
+    }
+    var defer = $q.defer();
     if ($scope.state.mode === "edit" && $scope.cubeMode === "addNewCube") {
       var cubeName = $scope.cubeMetaFrame.name;
-      var defer = $q.defer();
-      CubeService.getAllCubes({cubeName: cubeName}, {}, function (res) {
+      CubeService.checkDuplicateCubeName({cubeName: cubeName}, {}, function (res) {
         if (!res.data) {
           SweetAlert.swal('Oops...', "The cube named [" + cubeName.toUpperCase() + "] already exists", 'warning');
         }
-        defer.resolve(res.data)
+        return defer.resolve(res.data);
       })
-      return defer.promise
-    }
-    // Update storage type according to the streaming table in model
-    if(TableModel.selectProjectTables.some(function(table) {
-        return (table.name === $scope.metaModel.model.fact_table && _.values(tableConfig.streamingSourceType).indexOf(table.source_type) > -1)
-    })) {
-        $scope.cubeMetaFrame.storage_type = 3;
     } else {
-        $scope.cubeMetaFrame.storage_type = 2;
+      defer.resolve(true);
     }
-    return true;
+    return defer.promise;
   }
 
     $scope.check_cube_dimension = function(){
diff --git a/webapp/app/js/services/cubes.js b/webapp/app/js/services/cubes.js
index 0b0958d..fe28772 100644
--- a/webapp/app/js/services/cubes.js
+++ b/webapp/app/js/services/cubes.js
@@ -81,6 +81,6 @@ KylinApp.factory('CubeService', ['$resource', function ($resource, config) {
     optimize: {method: 'PUT', params: {action: 'optimize'}, isArray: false},
     autoMigrate: {method: 'POST', params: {action: 'migrate'}, isArray: false},
     lookupRefresh: {method: 'PUT', params: {action: 'refresh_lookup'}, isArray: false},
-    getAllCubes: {method: 'GET', params: {action: 'validate'}, isArray: false}
+    checkDuplicateCubeName: {method: 'GET', params: {action: 'validate'}, isArray: false}
   });
 }]);
diff --git a/webapp/app/partials/cubes/cube_schema.html b/webapp/app/partials/cubes/cube_schema.html
index 5cf39dc..c4cebbf 100644
--- a/webapp/app/partials/cubes/cube_schema.html
+++ b/webapp/app/partials/cubes/cube_schema.html
@@ -25,7 +25,7 @@
                 <ul class="wizard-steps">
                     <li ng-repeat="step in wizardSteps"
                         class="{{step==curStep?'active':''}} {{step.isComplete?'complete':''}}">
-                        <span style="cursor:pointer;" ng-click="checkCubeForm($index)?goToStep($index):''" class="step">{{step.step = ($index + 1)}}</span>
+                        <span style="cursor:pointer;" ng-click="nextStep($index, goToStep)" class="step">{{step.step = ($index + 1)}}</span>
                         <span class="title">{{step.title}}</span>
                      </li>
                 </ul>
@@ -46,7 +46,7 @@
                             <i class="ace-icon fa fa-arrow-left"></i>
                             Prev
                         </button>
-                        <button id="nextButton" class="btn btn-success btn-next"  ng-click="checkCubeForm($index)?nextView():''" ng-disabled="forms[curStep.form].$invalid"
+                        <button id="nextButton" class="btn btn-success btn-next"  ng-click="nextStep($index, nextView)" ng-disabled="forms[curStep.form].$invalid"
                                 ng-show="curStep.title!='Overview'">
                             Next
                             <i class="ace-icon fa fa-arrow-right icon-on-right"></i>