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:13 UTC

[44/52] [abbrv] incubator-kylin git commit: use modelsManager

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/jobs/job_refresh.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/jobs/job_refresh.html b/webapp/app/partials/jobs/job_refresh.html
index 89705e0..6113a12 100644
--- a/webapp/app/partials/jobs/job_refresh.html
+++ b/webapp/app/partials/jobs/job_refresh.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 == 0">
+                <div ng-if="!!!(cubesManager.currentCube.segments) || cubesManager.currentCube.segments.length == 0">
                     <span class="text-info">No Segment to refresh.</span>
                 </div>
-                <div ng-if="cube.segments.length > 0" class="row">
-                    <table class="table table-striped list" ng-if="(cube.segments|filter: {status: 'NEW'}).length == 0">
+                <div ng-if="cubesManager.currentCube.segments.length > 0" 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="selectedSegment"
-                                        ng-init="selectedSegment=cube.segments[0];segmentSelected(selectedSegment);"
-                                        ng-options="segment as segment.name for segment in cube.segments"
+                                        ng-init="selectedSegment=cubesManager.currentCube.segments[0];segmentSelected(selectedSegment);"
+                                        ng-options="segment as segment.name for segment in cubesManager.currentCube.segments"
                                         ng-change="segmentSelected(selectedSegment)">
                                 </select>
                             </td>
@@ -70,7 +70,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>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/jobs/job_submit.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/jobs/job_submit.html b/webapp/app/partials/jobs/job_submit.html
index 7887680..0876ed8 100644
--- a/webapp/app/partials/jobs/job_submit.html
+++ b/webapp/app/partials/jobs/job_submit.html
@@ -19,7 +19,6 @@
 <script type="text/ng-template" id="jobSubmit.html">
     <div class="modal-header">
         <h4 tooltip="submit">CUBE BUILD CONFIRM</h4>
-        <span>{{metaModel.model.partition_desc.partition_date_column}}</span>
     </div>
     <div class="modal-body" style="background-color: white">
         <div ng-if="metaModel.model.partition_desc.partition_date_column" class="row">
@@ -27,7 +26,7 @@
             <div class="col-md-8">
                 <div class="row">
                     <table class="table table-striped list"
-                           ng-if="(cube.segments | filter: {status: 'NEW'}).length == 0">
+                           ng-if="(cubesManager.currentCube.segments | filter: {status: 'NEW'}).length == 0">
                         <tbody>
                         <tr>
                             <td>PARTITION DATE COLUMN</td>
@@ -37,15 +36,15 @@
                             <td>Start Date (Include)</td>
                             <td>
                                 <!--no need convert UTC again-->
-                                <div ng-if="cube.segments.length == 0">
+                                <div ng-if="cubesManager.currentCube.segments.length == 0">
                                     {{jobBuildRequest.startTime =
                                     (!!metaModel.model.partition_desc.partition_date_start)?metaModel.model.partition_desc.partition_date_start:0
                                     | reverseToGMT0 }}
                                 </div>
-                                <div ng-if="cube.segments.length > 0">
+                                <div ng-if="cubesManager.currentCube.segments.length > 0">
                                     <!--no need to convert-->
                                     <div ng-if="metaModel.model.partition_desc.partition_type=='APPEND'">
-                                        {{ jobBuildRequest.startTime = cube.segments[cube.segments.length-1].date_range_end| reverseToGMT0 }}
+                                        {{ jobBuildRequest.startTime = cubesManager.currentCube.segments[cubesManager.currentCube.segments.length-1].date_range_end| reverseToGMT0 }}
                                     </div>
                                     <!--<div ng-if="metaModel.model.partition_desc.cube_partition_type=='UPDATE_INSERT'">-->
                                         <!--&lt;!&ndash;<datepicker ng-model="jobBuildRequest.startTime" show-weeks="true"&ndash;&gt;-->
@@ -68,7 +67,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>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/modelDesigner/conditions_settings.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/conditions_settings.html b/webapp/app/partials/modelDesigner/conditions_settings.html
index b104309..d066930 100644
--- a/webapp/app/partials/modelDesigner/conditions_settings.html
+++ b/webapp/app/partials/modelDesigner/conditions_settings.html
@@ -27,11 +27,11 @@
                 <div class="col-xs-12 col-sm-6">
                     <select class="form-control"
                         ng-if="state.mode=='edit'"
-                        chosen ng-model="model.partition_desc.partition_type"
+                        chosen ng-model="modelsManager.selectedModel.partition_desc.partition_type"
                         ng-options="ddt as ddt for ddt in cubeConfig.cubePartitionTypes">
                         <option value=""></option>
                     </select>
-                    <span ng-if="state.mode=='view'">{{model.partition_desc.partition_type}}</span>
+                    <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.partition_desc.partition_type}}</span>
                 </div>
             </div>
         </div>
@@ -43,16 +43,16 @@
                 <div class="col-xs-12 col-sm-6">
 
                     <select style="width: 100%" chosen data-placeholder="e.g. DEFAULT.TEST_KYLIN_FACT.CAL_DT"
-                            ng-model="model.partition_desc.partition_date_column"
+                            ng-model="modelsManager.selectedModel.partition_desc.partition_date_column"
                             ng-if="state.mode=='edit'"
                             data-placement=""
-                            ng-options="model.fact_table+'.'+columns.name as model.fact_table+'.'+columns.name for columns in getPartitonColumns(model.fact_table)" >
+                            ng-options="modelsManager.selectedModel.fact_table+'.'+columns.name as modelsManager.selectedModel.fact_table+'.'+columns.name for columns in getPartitonColumns(modelsManager.selectedModel.fact_table)" >
                         <option value="">--Select Partition Column--</option>
                     </select>
                     <small class="help-block text-red" ng-show="state.mode=='edit'">(data format in column should be 'YYYY-MM-DD')</small>
 
                     <span ng-if="state.mode=='view'">
-                        {{!!(model.partition_desc.partition_date_column)?model.partition_desc.partition_date_column: ''}}</span>
+                        {{!!(modelsManager.selectedModel.partition_desc.partition_date_column)?modelsManager.selectedModel.partition_desc.partition_date_column: ''}}</span>
                 </div>
             </div>
         </div>
@@ -61,14 +61,14 @@
         <div class="form-group">
             <div class="row">
                 <label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Start Date</b></label>
-                <div class="col-xs-12 col-sm-6" ng-class="model.partition_desc.partition_date_column!=null&& model.partition_desc.partition_date_start==null?'has-error':''">
+                <div class="col-xs-12 col-sm-6" ng-class="modelsManager.selectedModel.partition_desc.partition_date_column!=null&& modelsManager.selectedModel.partition_desc.partition_date_start==null?'has-error':''">
                   <!--edit model will convert in MetaModel.converDateToGMT-->
                     <input type="text" class="form-control" datepicker-popup="yyyy-MM-dd"
-                           ng-model="model.partition_desc.partition_date_start" ng-if="state.mode=='edit'"
+                           ng-model="modelsManager.selectedModel.partition_desc.partition_date_start" ng-if="state.mode=='edit'"
                            placeholder="Click to choose start date..." is-open="opened" />
-                    <small class="help-block" ng-show="model.partition_desc.partition_date_column!=null&& model.partition_desc.partition_date_start==null">Please input start date when partition date column selected.</small>
+                    <small class="help-block" ng-show="modelsManager.selectedModel.partition_desc.partition_date_column!=null&& modelsManager.selectedModel.partition_desc.partition_date_start==null">Please input start date when partition date column selected.</small>
                   <!--vier model will convert use filter-->
-                    <span ng-if="state.mode=='view'&&model.partition_desc.partition_date_column">{{(model.partition_desc.partition_date_start)|reverseToGMT0 }}</span>
+                    <span ng-if="state.mode=='view'&&modelsManager.selectedModel.partition_desc.partition_date_column">{{(modelsManager.selectedModel.partition_desc.partition_date_start)|reverseToGMT0 }}</span>
                 </div>
             </div>
         </div>
@@ -79,11 +79,11 @@
                   <div class="col-xs-12 col-sm-6">
                       <select class="form-control"
                               ng-if="state.mode=='edit'"
-                              chosen ng-model="model.capacity"
+                              chosen ng-model="modelsManager.selectedModel.capacity"
                               ng-options="ddt as ddt for ddt in cubeConfig.cubeCapacities">
                           <option value=""></option>
                       </select>
-                      <span ng-if="state.mode=='view'">{{model.capacity}}</span>
+                      <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.capacity}}</span>
                   </div>
               </div>
           </div>
@@ -103,16 +103,16 @@
                                   style="height:150px"
                                   class="form-control box-default"
                                   placeholder="Please input WHERE clause without typing 'WHERE'"
-                                  ng-model="model.filter_condition">
+                                  ng-model="modelsManager.selectedModel.filter_condition">
                         </textarea>
                     </div>
 
                     <!--view mode-->
                     <div class="form-group row" ng-if="state.mode=='view'"
                          style="font-family:'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro'">
-                        <div ng-if="model.filter_condition" class="col-md-11 col-md-offset-1">
+                        <div ng-if="modelsManager.selectedModel.filter_condition" class="col-md-11 col-md-offset-1">
                             <p style="color: #930f80;"><b>WHERE</b></p>
-                            <span>{{model.filter_condition}}</span>
+                            <span>{{modelsManager.selectedModel.filter_condition}}</span>
                         </div>
                     </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/modelDesigner/data_model.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/data_model.html b/webapp/app/partials/modelDesigner/data_model.html
index 5f31201..076bc49 100644
--- a/webapp/app/partials/modelDesigner/data_model.html
+++ b/webapp/app/partials/modelDesigner/data_model.html
@@ -27,9 +27,9 @@
             </label>
             <div class="col-xs-12 col-sm-6" ng-class="{'has-error':forms.data_model_form.innerform.typeahead.$invalid && (forms.data_model_form.innerform.typeahead.$dirty||forms.data_model_form.$sbumitted)}">
                 <typeahead ng-if="state.mode=='edit'" items="tableModel.selectProjectTables" prompt="Fact Table Name"
-                           title="name" model="model.fact_table" required="true"></typeahead>
+                           title="name" model="modelsManager.selectedModel.fact_table" required="true"></typeahead>
                 <small class="help-block" ng-show="forms.data_model_form.innerform.typeahead.$error.required && (forms.data_model_form.innerform.typeahead.$dirty||forms.data_model_form.$sbumitted)">The fact table is required</small>
-                <span ng-if="state.mode=='view'">{{model.fact_table}}</span>
+                <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.fact_table}}</span>
             </div>
         </div>
     </div>
@@ -38,22 +38,22 @@
     <div class="dataTables_wrapper form-inline no-footer">
         <div class="row">
             <div class="col-xs-6" ng-if="state.mode=='edit'">
-                <button type="button" class="btn btn-primary" ng-disabled="!model.fact_table.length"
+                <button type="button" class="btn btn-primary" ng-disabled="!modelsManager.selectedModel.fact_table.length"
                         ng-click="openLookupModal()">
                     <i class="fa fa-plus"></i> Add Lookup Table
                 </button>
             </div>
             <div class="col-xs-6" ng-if="state.mode!='edit'">
-                <b>{{model.lookups.length ? 'Lookup Tables' : 'No Lookup Tables'}}</b>
+                <b>{{modelsManager.selectedModel.lookups.length ? 'Lookup Tables' : 'No Lookup Tables'}}</b>
             </div>
             <div class="col-xs-6">
-                <span class="pull-right input-icon input-icon-right nav-search" style="margin-left: 22px;" ng-if="model.lookups.length">
+                <span class="pull-right input-icon input-icon-right nav-search" style="margin-left: 22px;" ng-if="modelsManager.selectedModel.lookups.length">
                     <input type="text" placeholder="Filter ..." class="nav-search-input" ng-model="lookupState.filter"/>
                     <i class="ace-icon fa fa-search nav-search-icon"></i>
                 </span>
             </div>
         </div>
-        <table class="table table-striped table-hover" ng-if="model.lookups.length">
+        <table class="table table-striped table-hover" ng-if="modelsManager.selectedModel.lookups.length">
             <thead>
             <tr>
                 <th>ID</th>
@@ -64,7 +64,7 @@
             </tr>
             </thead>
             <tbody>
-            <tr ng-repeat="lookup in model.lookups | filter:lookupState.filter track by $index">
+            <tr ng-repeat="lookup in modelsManager.selectedModel.lookups | filter:lookupState.filter track by $index">
                 <td>
                     <b>{{$index + 1}}</b>
                 </td>
@@ -80,7 +80,7 @@
                 <td>
                     <ul class="list-unstyled">
                         <li ng-repeat="pk in lookup.join.primary_key track by $index">
-                            <code>{{lookup.table + '.' + pk}} = {{model.fact_table + '.' + lookup.join.foreign_key[$index]}}</code>
+                            <code>{{lookup.table + '.' + pk}} = {{modelsManager.selectedModel.fact_table + '.' + lookup.join.foreign_key[$index]}}</code>
                         </li>
                     </ul>
                 </td>
@@ -147,7 +147,7 @@
                                         <b>=</b>
                                         <select style="width: 45%" chosen data-placeholder="Fact Table Column"
                                                 ng-model="newLookup.join.foreign_key[$index]"
-                                                ng-options="columns.name as columns.name for columns in getColumnsByTable(model.fact_table)" >
+                                                ng-options="columns.name as columns.name for columns in getColumnsByTable(modelsManager.selectedModel.fact_table)" >
                                             <option value=""></option>
                                         </select>
                                         <button class="pull-right btn btn-xs btn-danger" style="cursor: pointer" tooltip="Delete"

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/modelDesigner/model_dimensions.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/model_dimensions.html b/webapp/app/partials/modelDesigner/model_dimensions.html
index e7fe07e..e17557a 100644
--- a/webapp/app/partials/modelDesigner/model_dimensions.html
+++ b/webapp/app/partials/modelDesigner/model_dimensions.html
@@ -21,7 +21,7 @@
    <ng-form name="forms.model_dimensions_form" novalidate>
     <!-- Dimensions Summary -->
     <div class="dataTables_wrapper form-inline no-footer">
-        <div class="row"  ng-if="state.mode=='view'&&model.dimensions.length > 0">
+        <div class="row"  ng-if="state.mode=='view'&&modelsManager.selectedModel.dimensions.length > 0">
             <div class="col-xs-6">
                 <b>Dimensions</b>
             </div>
@@ -35,7 +35,7 @@
 
          <!-- VIEW MODE -->
         <div class="row">
-            <table class="table table-striped table-hover" ng-if="state.mode=='view'&&model.dimensions.length > 0">
+            <table class="table table-striped table-hover" ng-if="state.mode=='view'&&modelsManager.selectedModel.dimensions.length > 0">
                 <thead>
                     <tr>
                         <th>ID</th>
@@ -44,7 +44,7 @@
                     </tr>
                 </thead>
                 <tbody class="cube-dimension">
-                    <tr ng-repeat="dimension in model.dimensions | filter:dimState.filter track by $index">
+                    <tr ng-repeat="dimension in modelsManager.selectedModel.dimensions | filter:dimState.filter track by $index">
                         <!--ID -->
                         <td>
                             <b>{{dimension.id = ($index + 1)}}</b>
@@ -64,7 +64,7 @@
         <div  ng-if="state.mode=='edit'" class="form-group model-dimension-edit" style="width: 100%">
             <h4 style="margin-left:42px">Dimensions</h4>
             <table style="margin-left:42px; width:92%"
-                   ng-if="model.dimensions.length > 0"
+                   ng-if="modelsManager.selectedModel.dimensions.length > 0"
                    class="table table-hover list">
                 <tr class="row">
                     <th class="col-xs-1">ID</th>
@@ -72,7 +72,7 @@
                     <th class="col-xs-9">Columns</th>
                 </tr>
 
-                <tr ng-repeat="dimension in model.dimensions" class="row">
+                <tr ng-repeat="dimension in modelsManager.selectedModel.dimensions" class="row">
                     <td class="col-xs-1">
                         <!-- ID -->
                         <b>{{($index + 1)}}</b>
@@ -83,7 +83,7 @@
                     <td class="col-xs-9">
                         <!-- Dimensions -->
                         <select ng-if="state.mode=='edit'" style="width: 100%"
-                                ng-model="model.dimensions[$index].columns" chosen multiple
+                                ng-model="modelsManager.selectedModel.dimensions[$index].columns" chosen multiple
                                 ng-change=""
                                 ng-options="column.name as column.name for column in getColumnsByTable(dimension.table)">
                             <option value=""></option>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/modelDesigner/model_info.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/model_info.html b/webapp/app/partials/modelDesigner/model_info.html
index d300806..18fac09 100644
--- a/webapp/app/partials/modelDesigner/model_info.html
+++ b/webapp/app/partials/modelDesigner/model_info.html
@@ -32,14 +32,14 @@
 
                         <!-- edit -->
                         <input ng-if="state.mode=='edit'" name="model_name" type="text" class="form-control"
-                               ng-model="model.name" required
+                               ng-model="modelsManager.selectedModel.name" required
                                placeholder="You can use letters, numbers, and '_'"
                                ng-maxlength=100 ng-pattern="/^\w+$/" />
                         <small class="help-block" ng-show="forms.model_info_form.model_name.$error.required && (forms.model_info_form.model_name.$dirty||forms.model_info_form.$sbumitted)">Model name is required.</small>
                         <small class="help-block" ng-show="!forms.model_info_form.model_name.$error.required&&forms.model_info_form.model_name.$invalid && (forms.model_info_form.model_name.$dirty||forms.model_info_form.$sbumitted)">Model name is invalid.</small>
 
 
-                        <span ng-if="state.mode=='view'">{{model.name}}</span>
+                        <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.name}}</span>
                     </div>
                 </div>
             </div>
@@ -52,8 +52,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="model.description"></textarea>
-                        <span ng-if="state.mode=='view'">{{model.description}}</span>
+                                  name="comment" id="comment" ng-model="modelsManager.selectedModel.description"></textarea>
+                        <span ng-if="state.mode=='view'">{{modelsManager.selectedModel.description}}</span>
                     </div>
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/modelDesigner/model_measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/modelDesigner/model_measures.html b/webapp/app/partials/modelDesigner/model_measures.html
index f324788..039132d 100644
--- a/webapp/app/partials/modelDesigner/model_measures.html
+++ b/webapp/app/partials/modelDesigner/model_measures.html
@@ -20,7 +20,7 @@
 <ng-form name="forms.model_measure_form" novalidate>
 <div class="dataTables_wrapper form-inline no-footer">
 
-    <table ng-if="state.mode=='view'&&model.metrics.length > 0" class="table table-striped table-hover">
+    <table ng-if="state.mode=='view'&&modelsManager.selectedModel.metrics.length > 0" class="table table-striped table-hover">
         <thead>
             <tr>
                 <th>ID</th>
@@ -28,7 +28,7 @@
             </tr>
         </thead>
         <tbody>
-            <tr ng-repeat="measure in model.metrics track by $index">
+            <tr ng-repeat="measure in modelsManager.selectedModel.metrics track by $index">
                 <td>
                     <!--ID -->
                     <b>{{$index + 1}}</b>
@@ -43,9 +43,9 @@
     <div  ng-if="state.mode=='edit'" class="form-group" style="width: 100%">
         <h3 class="box-title">Select your measures</h3>
         <select style="width: 100%"
-                ng-model="model.metrics"  chosen multiple
+                ng-model="modelsManager.selectedModel.metrics"  chosen multiple
                 ng-change=""
-                ng-options="measure.name as measure.name for measure in getColumnsByTable(model.fact_table)">
+                ng-options="measure.name as measure.name for measure in getColumnsByTable(modelsManager.selectedModel.fact_table)">
             <option value=""></option>
         </select>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/models/model_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/model_detail.html b/webapp/app/partials/models/model_detail.html
index dd8b23c..7752ba6 100644
--- a/webapp/app/partials/models/model_detail.html
+++ b/webapp/app/partials/models/model_detail.html
@@ -18,46 +18,46 @@
 
 <!--show detail when exist models-->
 <div ng-controller="CubeModelCtrl" class="nav-tabs-custom" style="margin-top:40px;">
-    <ul ng-show="model.name" class="nav nav-tabs">
-        <li class="{{(!model.visiblePage || model.visiblePage=='metadata')? 'active':''}}">
-            <a href="" ng-click="model.visiblePage='metadata'">Grid</a>
+    <ul ng-show="modelsManager.selectedModel.name" class="nav nav-tabs">
+        <li class="{{(!modelsManager.selectedModel.visiblePage || modelsManager.selectedModel.visiblePage=='metadata')? 'active':''}}">
+            <a href="" ng-click="modelsManager.selectedModel.visiblePage='metadata'">Grid</a>
         </li>
-        <li class="{{model.visiblePage=='graph'? 'active':''}}">
-            <a href="" ng-click="model.visiblePage='graph';buildGraph(model);$event.stopPropagation();">Visualization</a>
+        <li class="{{modelsManager.selectedModel.visiblePage=='graph'? 'active':''}}">
+            <a href="" ng-click="modelsManager.selectedModel.visiblePage='graph';buildGraph(modelsManager.selectedModel);$event.stopPropagation();">Visualization</a>
         </li>
-        <li class="{{model.visiblePage=='json_model'? 'active':''}}"
-            ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(model, 16) && !newAccess">
-            <a href="" ng-click="model.visiblePage='json_model';">JSON</a>
+        <li class="{{modelsManager.selectedModel.visiblePage=='json_model'? 'active':''}}"
+            ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, 16) && !newAccess">
+            <a href="" ng-click="modelsManager.selectedModel.visiblePage='json_model';">JSON</a>
         </li>
-        <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(model, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
+        <li class="dropdown" ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, 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-star"> Action </i> <span class="caret"></span>
             </a>
             <ul class="dropdown-menu">
-                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(model, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
-                    <a href="models/edit/{{model.name}}" data-widget="collapse">Edit</a>
+                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
+                    <a href="models/edit/{{modelsManager.selectedModel.name}}" data-widget="collapse">Edit</a>
                 </li>
                 <li ng-if="userService.hasRole('ROLE_ADMIN')">
-                    <a ng-click="dropModel(model)">Drop</a>
+                    <a ng-click="dropModel(modelsManager.selectedModel)">Drop</a>
                 </li>
                 <li role="presentation" class="divider"></li>
-                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(model, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
-                    <a href="cubes/add/{{model.name}}" data-widget="collapse">Create Cube</a>
+                <li ng-if="userService.hasRole('ROLE_ADMIN') || hasPermission(modelsManager.selectedModel, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask, permissions.OPERATION.mask)">
+                    <a href="cubes/add/{{modelsManager.selectedModel.name}}" data-widget="collapse">Create Cube</a>
                 </li>
             </ul>
         </li>
     </ul>
 
-    <div class="model-detail" ng-if="!model.visiblePage || model.visiblePage=='metadata'">
+    <div class="model-detail" ng-if="!modelsManager.selectedModel.visiblePage || modelsManager.selectedModel.visiblePage=='metadata'">
         <div ng-include="'partials/models/model_schema.html'" ng-controller="ModelSchemaCtrl"
-             ng-init="state={mode:'view', modelName:model.name}">
+             ng-init="state={mode:'view', modelName:modelsManager.selectedModel.name}">
         </div>
     </div>
-    <div ng-show="model.visiblePage=='graph'" id="model_graph_{{model.name}}" class="model-detail model_graph">
+    <div ng-show="modelsManager.selectedModel.visiblePage=='graph'" id="model_graph_{{modelsManager.selectedModel.name}}" class="model-detail model_graph">
     </div>
-    <div ng-show="model.visiblePage=='json_model'" class="model-detail">
+    <div ng-show="modelsManager.selectedModel.visiblePage=='json_model'" class="model-detail">
           <pre ng-if="!state.jsonEdit"
-               style="background-color: white;border: 0px">{{angular.toJson(cleanStatus(model), true)}}</pre>
+               style="background-color: white;border: 0px">{{angular.toJson(cleanStatus(modelsManager.selectedModel), true)}}</pre>
     </div>
 
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/models/model_schema.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/model_schema.html b/webapp/app/partials/models/model_schema.html
index b94cecb..c7da5f2 100644
--- a/webapp/app/partials/models/model_schema.html
+++ b/webapp/app/partials/models/model_schema.html
@@ -17,13 +17,11 @@
 -->
 
 <!--hide when view model and no model selected-->
-<div class="box box-primary model-design box-2px" ng-hide="state.mode=='view'&&!model.name">
+<div class="box box-primary model-design box-2px" ng-init="model" ng-hide="state.mode=='view'&&!modelsManager.selectedModel.name">
     <div class="box-header widget-header-blue widget-header-flat">
         <h4 class="box-title text-info">Model Designer</h4>
     </div>
     <div class="box-body">
-            <!-- Add a mock button to avoid auto submit-->
-            <button ng-click="" ng-show="false"></button>
             <div>
                 <ul class="wizard-steps">
                     <li ng-repeat="step in wizardSteps"
@@ -66,7 +64,7 @@
 </div>
 
 <!--show create model tip when no models list-->
-<div ng-show="state.mode=='view'&&!models_treedata.length" style="margin-top:40px;">
+<div ng-show="state.mode=='view'&&!modelsManager.modelTreeData.length" style="margin-top:40px;">
     <div class="box box-primary">
         <div class="box-header with-border">
             <i class="fa fa-bullhorn"></i>
@@ -81,7 +79,7 @@
 </div>
 
 <!--show select model tip when models not empty and no model selected-->
-<div ng-show="state.mode=='view'&&!!models_treedata.length&&!model.name" style="margin-top:40px;">
+<div ng-show="state.mode=='view'&&!!modelsManager.modelTreeData.length&&!modelsManager.selectedModel.name" style="margin-top:40px;">
     <div class="box box-primary">
         <div class="box-header with-border">
             <i class="fa fa-bullhorn"></i>

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/models/models.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/models.html b/webapp/app/partials/models/models.html
index 2d3e79f..dbcda0a 100644
--- a/webapp/app/partials/models/models.html
+++ b/webapp/app/partials/models/models.html
@@ -40,10 +40,10 @@
             </tab>
         </tabset>
     </div>
-    <div  ng-if="showModels&&!cubeSelected"  class="col-xs-9 models-main">
+    <div  ng-if="showModels&&!modelsManager.cubeSelected"  class="col-xs-9 models-main">
         <div ng-include src="'partials/models/model_detail.html'"></div>
     </div>
-    <div  ng-if="showModels&&cubeSelected"  class="col-xs-9 models-main">
+    <div  ng-if="showModels&&modelsManager.cubeSelected"  class="col-xs-9 models-main">
         <div ng-include src="'partials/cubes/cube_detail.html'"></div>
     </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d9e2d046/webapp/app/partials/models/models_tree.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/models/models_tree.html b/webapp/app/partials/models/models_tree.html
index 4ed21f6..21128ce 100644
--- a/webapp/app/partials/models/models_tree.html
+++ b/webapp/app/partials/models/models_tree.html
@@ -33,7 +33,7 @@
     <!--tree-->
     <div style="width:100%; height:{{window}}px; overflow:auto;">
         <abn-tree
-                tree-data         = "models_treedata"
+                tree-data         = "modelsManager.modelTreeData"
                 tree-control      = "my_tree"
                 icon-leaf         = "fa fa-cubes"
                 icon-expand       = "fa fa-star"
@@ -41,6 +41,6 @@
                 expand-level      = "2"
                 initial-selection = "">
             </abn-tree>
-        <div no-result ng-if="models_treedata.length==0"></div>
+        <div no-result ng-if="modelsManager.modelTreeData.length==0"></div>
     </div>
 </div>