Kaynağa Gözat

AMBARI-4252. Mirroring: provide New Dataset Dialog. (alexantonenko)

Alex Antonenko 11 yıl önce
ebeveyn
işleme
7349a52490

+ 34 - 4
ambari-web/app/controllers/main/mirroring/dataset_controller.js

@@ -44,6 +44,15 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
         return isNameError;
       }.property('newDataSet.name', 'model.newDataSet.name'),
 
+      isTypeError: function (key, value) {
+        if (value) {
+          return value;
+        }
+        var controller = App.router.get('mainMirroringDataSetController');
+        var isTypeError = controller.checkNameErrors();
+        return isTypeError;
+      }.property('newDataSet.type', 'model.newDataSet.type'),
+
       isSourceDirError: function (key, value) {
         if (value) {
           return value;
@@ -107,6 +116,7 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
 
   validate: function () {
     var isNameError = this.checkNameErrors();
+    var isTypeError = this.checkTypeErrors();
     var isSourceDirError = this.checkSourceDirErrors();
     var isTargetClusterError = this.checkTargetClusterErrors();
     var isTargetDirError = this.checkTargetDirErrors();
@@ -114,7 +124,7 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
     var isEndDateError = this.checkEndDateErrors();
     var isFrequencyError = this.checkFrequencyErrors();
 
-    if (isNameError || isSourceDirError || isTargetClusterError || isTargetDirError || isStartDateError || isEndDateError || isFrequencyError) {
+    if (isNameError || isTypeError || isSourceDirError || isTargetClusterError || isTargetDirError || isStartDateError || isEndDateError || isFrequencyError) {
       return false;
     }
     return true;
@@ -138,6 +148,24 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
 
   },
 
+  checkTypeErrors: function () {
+    if (!this.get('isSubmitted')){
+      this.set('typeErrorMessage', "");
+      return false;
+    }
+    var type = this.get('model.newDataSet.type');
+    if (!type || type.trim() === "") {
+      this.set('model.isTypeError', true);
+      this.set('typeErrorMessage', Em.I18n.t('mirroring.required.error'));
+      return true;
+    }
+    else {
+      this.set('typeErrorMessage', "");
+      return false;
+    }
+
+  },
+
   checkSourceDirErrors: function () {
     if (!this.get('isSubmitted')){
       this.set('sourceDirErrorMessage', "");
@@ -281,6 +309,7 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
   },
 
   nameErrorMessage: null,
+  typeErrorMessage: null,
   sourceDirErrorMessage: null,
   targetClusterErrorMessage: null,
   targetDirErrorMessage: null,
@@ -301,6 +330,7 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
   createNewDataSet: function () {
     var newDataSet = Ember.Object.create({
       name: null,
+      type: null,
       sourceDir: null,
       targetCluster: Ember.Object.create(),
       targetDir: null,
@@ -314,6 +344,7 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
   setDataSet: function (dataset) {
     var newDataSet = Ember.Object.create({
       name: dataset.get('name'),
+      type: dataset.get('type'),
       sourceDir: dataset.get('sourceDir'),
       targetCluster: dataset.get('targetCluster'),
       targetDir: dataset.get('targetDir'),
@@ -334,9 +365,8 @@ App.MainMirroringDataSetController = Ember.Controller.extend({
   },
 
   createTargetCluster: function () {
-    var controller = App.router.get('mainMirroringTargetClusterController');
-    controller.set('returnRoute', App.get('router.currentState.path'));
-    App.router.transitionTo('addTargetClusterRoute');
+    var controller = App.router.get('mainMirroringController');
+    controller.manageClusters();
   },
 
   /**

+ 4 - 1
ambari-web/app/messages.js

@@ -1688,8 +1688,9 @@ Em.I18n.translations = {
   'mirroring.dataset.editDataset':'Edit Dataset',
   'mirroring.dataset.selectTargetClusters':'Select Target Cluster...',
   'mirroring.dataset.name':'Name',
+  'mirroring.dataset.type':'Type',
   'mirroring.dataset.save': 'Save & Run',
-  'mirroring.dataset.sourceDir':'Location',
+  'mirroring.dataset.sourceDir':'Source',
   'mirroring.dataset.target':'Target',
   'mirroring.dataset.source':'Source',
   'mirroring.dataset.filespec':'Spec',
@@ -1702,6 +1703,8 @@ Em.I18n.translations = {
   'mirroring.dataset.addTargetCluster':'Add Target Cluster',
   'mirroring.dataset.toggle.active':'Activate',
   'mirroring.dataset.toggle.suspended':'Suspend',
+  'mirroring.dataset.type.HDFS':'HDFS',
+  'mirroring.dataset.type.Hive':'Hive Tables',
 
   'mirroring.manageClusters.ambariServer':'Ambari Server',
   'mirroring.manageClusters.testConnection':'Test Connection',

+ 15 - 1
ambari-web/app/templates/main/mirroring/dataset.hbs

@@ -15,7 +15,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 }}
-<div class="pull-left dataset-form" autocomplete="off">
+<div class="row-fluid">
     <form class="form-horizontal">
         <div class="add-data-set">
             <table>
@@ -31,6 +31,20 @@
                 <tr>
                     <td class="spacer" colspan="3"></td>
                 </tr>
+
+                <tr {{bindAttr class="model.isTypeError:error"}}>
+                    <td class="percent25" colspan="1">
+                      {{t mirroring.dataset.type}}
+                    </td>
+                    <td colspan="2" style="text-align: left">
+                      {{view view.typeSelect }}
+                        <span class="help-inline">{{typeErrorMessage}}</span>
+                    </td>
+                </tr>
+                <tr>
+                    <td class="spacer" colspan="3"></td>
+                </tr>
+
                 <tr {{bindAttr class="model.isSourceDirError:error"}}>
                     <td colspan="1">
                       {{t mirroring.dataset.sourceDir}}

+ 1 - 1
ambari-web/app/templates/main/mirroring/datasets.hbs

@@ -24,7 +24,7 @@
       </button>
       <ul class="dropdown-menu pull-left">
         <li>
-          <a href="javascript:void(null);">
+          <a  href="javascript:void(null);" {{action addNewDataset}}>
             <i class="icon-plus"></i>&nbsp;{{t mirroring.dataset.createDataset}}
           </a>
         </li>

+ 25 - 0
ambari-web/app/views/main/mirroring/dataset_view.js

@@ -130,6 +130,31 @@ App.MainMirroringDataSetView = Em.View.extend({
 
   }.property('controller.model.newDataSet'),
 
+  typeSelect: App.MainMirroringDropdownView.extend({
+
+    controller: App.get('router.mainMirroringDataSetController'),
+
+    select: function (event) {
+      var selected = event.context;
+      this.set('selected', selected);
+      this.set('controller.model.newDataSet.type', selected.value);
+    },
+
+    listOfOptions: function () {
+      return [
+        {
+          title: Em.I18n.t('mirroring.dataset.type.HDFS'),
+          value: 'HDFS'
+        },
+        {
+          title: Em.I18n.t('mirroring.dataset.type.Hive'),
+          value: 'Hive'
+        }
+      ]
+    }.property()
+
+  }),
+
   hourOptions: Ember.Object.create({
     selectedForStart: function (key, value) {
       if (value) {

+ 1 - 1
ambari-web/app/views/main/mirroring/dropdown_view.js

@@ -27,7 +27,7 @@ App.MainMirroringDropdownView = Em.View.extend({
 
   templateName:require('templates/main/mirroring/dropdown'),
 
-  selected: Ember.Object.create({title: 'Select', value: ''}),
+  selected: Ember.Object.create({title: 'Select type', value: ''}),
 
   listOfOptions : null,