AMBARI-17948. User is able to create widget with no metrics included (alexantonenko)
diff --git a/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js b/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
index 68233f6..29a3408 100644
--- a/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
+++ b/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
@@ -124,7 +124,8 @@
    * @returns {boolean}
    */
   isExpressionComplete: function (expression) {
-    return Boolean(expression && !expression.get('isInvalid') && !expression.get('isEmpty'));
+    return Boolean(expression && !expression.get('isInvalid') && !expression.get('isEmpty')
+      && expression.get('data')&& expression.get('data').someProperty('isMetric'));
   },
 
   /**
diff --git a/ambari-web/app/styles/enhanced_service_dashboard.less b/ambari-web/app/styles/enhanced_service_dashboard.less
index 3e14b87..07dacf6 100644
--- a/ambari-web/app/styles/enhanced_service_dashboard.less
+++ b/ambari-web/app/styles/enhanced_service_dashboard.less
@@ -431,7 +431,7 @@
       .metric-field {
         height: 85%;
         background-color: #f5f5f5;
-        overflow: scroll;
+        overflow: auto;
         border: 1px solid @border-color;
       }
       .metric-instance {
@@ -732,6 +732,7 @@
             display: block;
             color: #808080;
             overflow-x: hidden;
+            overflow-y: auto;
             height: 40px;
             white-space: pre-line;
           }
diff --git a/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js b/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
index e717f02..57b64af 100644
--- a/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
+++ b/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
@@ -152,23 +152,72 @@
     var testCases = [
       {
         expression: null,
-        result: false
+        result: false,
+        title: 'no expression'
       },
       {
         expression: Em.Object.create({isInvalid: true}),
-        result: false
+        result: false,
+        title: 'invalid expression, no data array'
       },
       {
         expression: Em.Object.create({isInvalid: false, isEmpty: false}),
-        result: true
+        result: false,
+        title: 'no data array'
       },
       {
         expression: Em.Object.create({isInvalid: false, isEmpty: true}),
-        result: false
+        result: false,
+        title: 'empty expression'
+      },
+      {
+        expression: Em.Object.create({isInvalid: true, data: []}),
+        result: false,
+        title: 'invalid expression, empty data array'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: false, data: []}),
+        result: false,
+        title: 'empty data array'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: true, data: []}),
+        result: false,
+        title: 'empty expression and data array'
+      },
+      {
+        expression: Em.Object.create({isInvalid: true, data: [{isMetric: false}]}),
+        result: false,
+        title: 'invalid expression, no metrics'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: false, data: [{isMetric: false}]}),
+        result: false,
+        title: 'no metrics'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: true, data: [{isMetric: false}]}),
+        result: false,
+        title: 'empty expression, no metrics'
+      },
+      {
+        expression: Em.Object.create({isInvalid: true, data: [{isMetric: false}, {isMetric: true}]}),
+        result: false,
+        title: 'invalid expression'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: false, data: [{isMetric: false}, {isMetric: true}]}),
+        result: true,
+        title: 'valid expression'
+      },
+      {
+        expression: Em.Object.create({isInvalid: false, isEmpty: true, data: [{isMetric: false}, {isMetric: true}]}),
+        result: false,
+        title: 'empty expression, valid data array'
       }
     ];
     testCases.forEach(function (test) {
-      it("expression = " + test.expression, function () {
+      it(test.title, function () {
         expect(controller.isExpressionComplete(test.expression)).to.equal(test.result);
       });
     });