Hi Surinder,

   Thanks for your review.

   We have changed the indentation for _dashboard.scss file and also
removed the style about icon-postgres:before, like margin-top,etc, but we
are not sure if it is perfectly aligned now, you can add further change to
it.

    As the second comment, I'm sorry I'm not sure what's the problem, could
you please clarify it? Because we replace css with scss right now,
dashboard.css doesn't exist. So maybe you are looking at the css file that
are complied by the scss?

    For the fourth comment, we tried the steps you suggested on master
branch, the error is not shown either. So it should be an existing issue.
But if you want to see the error message, navigate to "Servers" at the top
of browser, then navigate back to postgresql server, then you will see the
error message.


Thanks,

Wenlin &Violet



On Mon, Aug 7, 2017 at 2:30 PM, Surinder Kumar <
surinder.ku...@enterprisedb.com> wrote:

> Hi
> Review comments:
>
>    1.
>
>    For consistency, we use two spaces for indentation in CSS files. Four
>    spaces are used in _dashboard.scss file. The configurations are
>    defined in web/.editorconfig file.
>    2.
>
>    In,dashboard.css Can we return function object in return instead of
>    function class itself, this will eliminate the need of creating function
>    object every time we use info and error?
>    3.
>
>    On Dashboard, I can see Postgres icon is misaligned compared to other
>    icons in Getting Started section. It is not related to this patch.
>    adjusting margin top will fix it.
>    4.
>
>    I tried to test out Error message displayed, but I encounter an
>    error(screenshot attached).
>    Steps to reproduce:
>       - Open pgAdmin4 in browser
>       - Connect to PostgreSQL Server, Keep dashboard tab open.
>       - Navigate to the database which is connected.
>       - Now disconnect pgAdmin4 python server.
>       - No error message is displayed on Dashboard because it breaks in
>       JS as xhr.responseText is empty.
>       However, it might be an existing issue.
>
> Thanks,
> Surinder
>
> On Mon, Aug 7, 2017 at 10:40 AM, Wenlin Zhang <wzh...@pivotal.io> wrote:
>
> Hi Ashesh,
>>
>>     That's correct. This patch just changed alert style in the 'tabs',
>> such as Dependency and Dependents.
>>
>> Thanks
>>
>> Wenlin
>>
>> On Mon, Aug 7, 2017 at 12:51 PM, Ashesh Vashi <
>> ashesh.va...@enterprisedb.com> wrote:
>>
>>> Surinder,
>>>
>>> Please take a look at this patch.
>>>
>>> If I recalls correctly, this patch is related to styling of the 'tabs'
>>> shown on the main window.
>>> Wenlin - please correct me if my understanding is wrong.
>>>
>>> --
>>>
>>> Thanks & Regards,
>>>
>>> Ashesh Vashi
>>> EnterpriseDB INDIA: Enterprise PostgreSQL Company
>>> <http://www.enterprisedb.com>
>>>
>>>
>>> *http://www.linkedin.com/in/asheshvashi*
>>> <http://www.linkedin.com/in/asheshvashi>
>>>
>>> On Mon, Aug 7, 2017 at 8:11 AM, Sarah McAlear <smcal...@pivotal.io>
>>> wrote:
>>>
>>>> Hi hackers,
>>>>
>>>>     Could you please review this patch?
>>>>
>>>> Thanks
>>>>
>>>> Wenlin and Sarah
>>>>
>>>> On Wed, Aug 2, 2017 at 2:15 PM, Wenlin Zhang <wzh...@pivotal.io> wrote:
>>>>
>>>>> Hi Hackers,
>>>>>
>>>>> This patch changes the alert style in the sub-navigation to match
>>>>> style guide.
>>>>>
>>>>> Thanks,
>>>>> Wenlin, Shirley & Sarah
>>>>>
>>>>>
>>>>>
>>>>
>>>
>> ‚Äč
>
diff --git a/web/pgadmin/browser/static/js/browser.js 
b/web/pgadmin/browser/static/js/browser.js
index 45939b00..23d1d50e 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -136,7 +136,7 @@ define(
         width: 500,
         isCloseable: false,
         isPrivate: true,
-        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-statistics-message">' + select_object_msg + '</div><div 
class="pg-panel-statistics-container hidden"></div></div>',
+        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-statistics-message font-primary-blue border-blue-2 text-14">' + 
select_object_msg + '</div><div class="pg-panel-statistics-container 
hidden"></div></div>',
         events: panelEvents
       }),
       // Reversed engineered SQL for the object
@@ -157,7 +157,7 @@ define(
         width: 500,
         isCloseable: false,
         isPrivate: true,
-        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-depends-message">' + select_object_msg + '</div><div 
class="pg-panel-depends-container hidden"></div></div>',
+        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-depends-message font-primary-blue border-blue-2 text-14">' + 
select_object_msg + '</div><div class="pg-panel-depends-container 
hidden"></div></div>',
         events: panelEvents
       }),
       // Dependents of the object
@@ -168,7 +168,7 @@ define(
         width: 500,
         isCloseable: false,
         isPrivate: true,
-        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-depends-message">' + select_object_msg + '</div><div 
class="pg-panel-depends-container hidden"></div></div>',
+        content: '<div><div class="alert alert-info pg-panel-message 
pg-panel-depends-message font-primary-blue border-blue-2 text-14">' + 
select_object_msg + '</div><div class="pg-panel-depends-container 
hidden"></div></div>',
         events: panelEvents
       })
     },
diff --git a/web/pgadmin/dashboard/__init__.py 
b/web/pgadmin/dashboard/__init__.py
index 8ebab16c..24cc86ef 100644
--- a/web/pgadmin/dashboard/__init__.py
+++ b/web/pgadmin/dashboard/__init__.py
@@ -45,10 +45,7 @@ class DashboardModule(PgAdminModule):
         Returns:
             list: the stylesheets used by this module.
         """
-        stylesheets = [
-            url_for('dashboard.static', filename='css/dashboard.css')
-        ]
-        return stylesheets
+        return []
 
     def get_panels(self):
         return [
diff --git a/web/pgadmin/dashboard/static/css/dashboard.css 
b/web/pgadmin/dashboard/static/css/dashboard.css
deleted file mode 100644
index 735aebf5..00000000
--- a/web/pgadmin/dashboard/static/css/dashboard.css
+++ /dev/null
@@ -1,90 +0,0 @@
-.dashboard-container {
-    padding: 15px;
-}
-
-.dashboard-header-spacer {
-    padding-top: 15px;
-}
-
-.dashboard-link {
-    text-align: center;
-}
-
-.dashboard-link a {
-    cursor: pointer;
-}
-
-.dashboard-icon {
-    color: black;
-}
-
-.dashboard-tab-container {
-    border-left: 1px solid #E2E2E2;
-    border-right: 1px solid #E2E2E2;
-    border-bottom: 1px solid #E2E2E2;
-}
-
-.dashboard-tab-panel > li > a {
-    padding: 0px 15px !important;
-}
-
-.dashboard-tab {
-    border: 0px;
-    border-radius: 4px 4px 0px 0px;
-    margin-right: 1px;
-    font-size: 13px;
-    line-height: 25px;
-    margin-top: 5px;
-}
-
-.dashboard-tab.active {
-    margin-top: 0px;
-    line-height: 30px;
-}
-
-.dashboard-tab-btn-group {
-    background-color: #D2D2D2;
-    border: 2px solid #A9A9A9;
-    left: 0px;
-    right: 0px;
-    padding: 2px;
-}
-
-.dashboard-tab-btn-group button {
-    padding: 5px;
-}
-
-.dashboard-tab-btn-group > button {
-    margin: 2px 3px 2px 0px;
-    min-width: 40px;
-}
-
-.dashboard-tab-btn-group > button:first-child {
-    margin-left: 3px;
-}
-
-.dashboard-tab-btn-group > button:last-child {
-    margin-right: 3px;
-}
-
-.graph-container {
-    margin-top: 10px;
-    height: 150px;
-}
-
-.graph-error {
-    background-color: #E2E2E2;
-    padding-top: 20px
-}
-
-.grid-error {
-    background-color: #E2E2E2;
-    padding-top: 20px;
-    padding-bottom: 40px;
-}
-
-.icon-postgres:before {
-    height: 43px;
-    margin-top: 13px;
-    display: block;
-}
diff --git a/web/pgadmin/dashboard/static/js/dashboard.js 
b/web/pgadmin/dashboard/static/js/dashboard.js
index 86ebe38a..20dc5903 100644
--- a/web/pgadmin/dashboard/static/js/dashboard.js
+++ b/web/pgadmin/dashboard/static/js/dashboard.js
@@ -1,11 +1,11 @@
 define('pgadmin.dashboard', [
     'sources/url_for', 'sources/gettext', 'require', 'jquery', 'underscore',
-    'pgadmin', 'backbone', 'backgrid', 'flotr2',
+    'pgadmin', 'backbone', 'backgrid', 'sources/alerts/dashboard', 'flotr2',
     'pgadmin.alertifyjs', 'backgrid.filter',
     'pgadmin.browser', 'bootstrap', 'wcdocker'
     ],
-function(url_for, gettext, r, $, _, pgAdmin, Backbone, Backgrid, Flotr,
-  alertify) {
+function(url_for, gettext, r, $, _, pgAdmin, Backbone, Backgrid, 
AlertDashboard,
+  Flotr, alertify) {
 
   var wcDocker = window.wcDocker,
   pgBrowser = pgAdmin.Browser;
@@ -327,21 +327,21 @@ function(url_for, gettext, r, $, _, pgAdmin, Backbone, 
Backgrid, Flotr,
                         var err = $.parseJSON(xhr.responseText),
                             msg = err.errormsg,
                             cls;
+                        var html = "";
+                        var alertDashboard = new AlertDashboard();
                         // If we get a 428, it means the server isn't connected
                         if (xhr.status == 428) {
                             if (_.isUndefined(msg) || _.isNull(msg)) {
                               msg = gettext('Please connect to the selected 
server to view the graph.');
                             }
-                            cls = 'info';
-                        } else {
+                            html = alertDashboard.info(msg);
+                          } else {
                             msg = gettext('An error occurred whilst rendering 
the graph.');
-                            cls = 'danger';
+                            html = alertDashboard.error(msg);
                         }
 
                         $(container).addClass('graph-error');
-                        $(container).html(
-                            '<div class="alert alert-' + cls + ' 
pg-panel-message" role="alert">' + msg + '</div>'
-                        );
+                        $(container).html(html);
 
                         // Try again...
                         if (container.clientHeight > 0 && 
container.clientWidth > 0) {
@@ -447,18 +447,21 @@ function(url_for, gettext, r, $, _, pgAdmin, Backbone, 
Backgrid, Flotr,
                     filter.search();
                 },
                 error: function(model, xhr, options) {
-                     var err = $.parseJSON(xhr.responseText),
+                    var err = $.parseJSON(xhr.responseText),
                          msg = err.errormsg,
-                         cls;
+                            cls;
+
+                    var html = "";
+                    var alertDashboard = new AlertDashboard();
                     // If we get a 428, it means the server isn't connected
                     if (xhr.status == 428) {
                         if (_.isUndefined(msg) || _.isNull(msg)) {
                             msg = gettext('Please connect to the selected 
server to view the table.');
                         }
-                        cls = 'info';
+                        html = alertDashboard.info(msg);
                     } else {
                         msg = gettext('An error occurred whilst rendering the 
table.');
-                        cls = 'danger';
+                        html = alertDashboard.error(msg);
                     }
 
                     // Replace the content with the error, if not already 
present. Always update the message
@@ -467,9 +470,7 @@ function(url_for, gettext, r, $, _, pgAdmin, Backbone, 
Backgrid, Flotr,
                         $(container).addClass('grid-error');
                     }
 
-                    $(container).html(
-                        '<div class="alert alert-' + cls + ' pg-panel-message" 
role="alert">' + msg + '</div>'
-                    );
+                    $(container).html(html);
 
                     // Try again
                     setTimeout(function() {
diff --git a/web/pgadmin/static/css/style.css b/web/pgadmin/static/css/style.css
index 7d651925..6dd7e560 100644
--- a/web/pgadmin/static/css/style.css
+++ b/web/pgadmin/static/css/style.css
@@ -25,7 +25,6 @@
 
 @import '../../preferences/static/css/preferences.css';
 @import '../../browser/static/css/browser.css';
-@import '../../dashboard/static/css/dashboard.css';
 @import '../../browser/static/css/wizard.css';
 @import '../../tools/debugger/static/css/debugger.css';
 
@@ -34,4 +33,4 @@
 @import '../../tools/sqleditor/static/css/sqleditor.css';
 @import '../../misc/static/explain/css/explain.css';
 @import '../../misc/bgprocess/static/css/bgprocess.css';
-@import '../../misc/static/explain/css/explain.css';
\ No newline at end of file
+@import '../../misc/static/explain/css/explain.css';
diff --git a/web/pgadmin/static/js/alerts/dashboard.js 
b/web/pgadmin/static/js/alerts/dashboard.js
new file mode 100644
index 00000000..ddb0c231
--- /dev/null
+++ b/web/pgadmin/static/js/alerts/dashboard.js
@@ -0,0 +1,45 @@
+define([
+  'jquery',
+], function ($) {
+  var DashboardAlert = function () {
+    var info = function (message) {
+      var html = '<div class="alert-row" role="alert">' +
+          '<div class="alert alert-info border-blue-2 font-primary-blue 
text-14 alert-box">' +
+            '<div class="media">' +
+              '<div class="media-body media-middle">' +
+                '<div class="alert-text">' +
+                  message +
+                '</div>' +
+              '</div>' +
+            '</div>' +
+          '</div>' +
+        '</div>';
+      return html;
+    };
+
+    var error = function(message) {
+      var html = '<div class="alert-row" role="alert">' +
+          '<div class="alert alert-danger border-red-2 font-red-3 text-14 
alert-box">' +
+            '<div class="media">' +
+              '<div class="media-body media-middle">' +
+                '<div class="alert-icon error-icon">' +
+                  '<i class="fa fa-exclamation-triangle" 
aria-hidden="true"></i>' +
+                '</div>' +
+                '<div class="alert-text">' +
+                  message +
+                '</div>' +
+              '</div>' +
+            '</div>' +
+          '</div>' +
+        '</div>';
+      return html;
+    };
+
+    $.extend(this, {
+      'info': info,
+      'error': error,
+    });
+  };
+
+  return DashboardAlert;
+});
\ No newline at end of file
diff --git a/web/pgadmin/static/scss/_alert.scss 
b/web/pgadmin/static/scss/_alert.scss
index fdd4546c..212003fa 100644
--- a/web/pgadmin/static/scss/_alert.scss
+++ b/web/pgadmin/static/scss/_alert.scss
@@ -51,42 +51,38 @@ category: alerts
 ```
 */
 
-
 // from bootstrap scss:
 
-@if $enable-flex {
-  .media {
-    display: flex;
-  }
-  .media-body {
-    flex: 1;
-  }
-  .media-middle {
-    align-self: center;
-  }
-  .media-bottom {
-    align-self: flex-end;
-  }
-} @else {
-  .media,
-  .media-body {
-    overflow: hidden;
-  }
-  .media-body {
-    width: 10000px;
-  }
-  .media-left,
-  .media-right,
-  .media-body {
-    display: inline;
-    vertical-align: top;
-  }
-  .media-middle {
-    vertical-align: middle;
-  }
-  .media-bottom {
-    vertical-align: bottom;
-  }
+.media-body {
+  vertical-align: top;
+  width: initial;
+}
+
+.media-middle {
+  align-self: center;
+}
+
+.media-bottom {
+  align-self: flex-end;
+}
+
+.media-body.media-middle {
+  display: flex;
+  align-items: center;
+  width: 100%;
+}
+
+.alert-icon {
+  display: flex;
+  align-items: center;
+  color: white;
+  padding: 15px 15px 15px 17px;
+  width: 50px;
+  min-height: 50px;
+  font-size: 14px;
+  text-align: center;
+  align-self: stretch;
+  flex-shrink: 0;
 }
 
 .alert-row {
@@ -103,22 +99,12 @@ category: alerts
   padding: 15px;
 }
 
-.alert-icon {
-  display: inline-block;
-  color: white;
-  padding: 15px;
-  width: 50px;
-  height: 50px;
-  font-size: 14px;
-  text-align: center;
-}
-
 .success-icon {
-  background: #3a773a;
+  background: $color-green-3;
 }
 
 .error-icon {
-  background: #d0021b;
+  background: $color-red-3;
 }
 
 .info-icon {
@@ -133,12 +119,21 @@ category: alerts
 }
 
 .alert-info {
-  border-color: #84acdd
+  border-color: $color-blue-2;
+  background-image: none;
 }
 
-.media-body {
-  vertical-align: top;
-  width: initial;
+.alert-danger {
+  background-image: none;
+}
+
+.grid-error, .graph-error {
+  .alert-row {
+    align-items: center;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+  }
 }
 
 .ajs-message {
@@ -155,11 +150,12 @@ category: alerts
   }
 
   .alert-icon {
-    padding: 8px;
+    padding: 8px 8px 8px 10.5px;
     width: 35px;
     height: 35px;
     border-top-left-radius: 4px;
     border-bottom-left-radius: 4px;
+    min-height: auto;
   }
 
   .alert-text {
@@ -167,8 +163,8 @@ category: alerts
     border: 1px solid $color-red-2;
     border-top-right-radius: 4px;
     border-bottom-right-radius: 4px;
-    padding: 7px 12px 5px 10px;
-    border-left: 0px;
+    padding: 7px 12px 6px 10px;
+    border-left: none;
   }
 
   .error-in-footer {
@@ -193,7 +189,17 @@ category: alerts
     height: 35px;
 
     .alert-text {
-      border: 0px;
+      border: none;
     }
   }
 }
+
+//Internet Explorer specific CSS
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+  .alert-danger {
+    width: 90%;
+  }
+  .alert-info {
+    width: 90%;
+  }
+}
diff --git a/web/pgadmin/static/scss/_othercolors.scss 
b/web/pgadmin/static/scss/_othercolors.scss
index 9f6fbcda..b284346b 100644
--- a/web/pgadmin/static/scss/_othercolors.scss
+++ b/web/pgadmin/static/scss/_othercolors.scss
@@ -79,10 +79,12 @@ These colors should be used to highlight hover options in 
dropdown menus and cat
   width: 100%;
 }
 
+$color-blue-2: #84acdd;
 $color-red-1: #f2dede;
 $color-red-2: #de8585;
 $color-red-3: #d0021b;
 $color-green-2: #a2c189;
+$color-green-3: #3a773a;
 
 .bg-white-1 {
   background-color: #ffffff;
@@ -93,7 +95,7 @@ $color-green-2: #a2c189;
 }
 
 .bg-blue-2 {
-  background-color: #84acdd;
+  background-color: $color-blue-2;
 }
 
 .bg-red-1 {
@@ -117,7 +119,7 @@ $color-green-2: #a2c189;
 }
 
 .bg-green-3 {
-  background-color: #3a773a;
+  background-color: $color-green-3;
 }
 
 .border-blue-1 {
@@ -125,7 +127,7 @@ $color-green-2: #a2c189;
 }
 
 .border-blue-2 {
-  border-color: #84acdd;
+  border-color: $color-blue-2;
 }
 
 .border-red-1 {
@@ -149,7 +151,7 @@ $color-green-2: #a2c189;
 }
 
 .border-green-3 {
-  border-color: #3a773a;
+  border-color: $color-green-3;
 }
 
 .font-red-3 {
@@ -157,7 +159,7 @@ $color-green-2: #a2c189;
 }
 
 .font-green-3 {
-  color: #3a773a;
+  color: $color-green-3;
 }
 
 .font-white {
diff --git a/web/pgadmin/static/scss/dashboard/_dashboard.scss 
b/web/pgadmin/static/scss/dashboard/_dashboard.scss
new file mode 100644
index 00000000..16c30939
--- /dev/null
+++ b/web/pgadmin/static/scss/dashboard/_dashboard.scss
@@ -0,0 +1,84 @@
+.dashboard-container {
+  padding: 15px;
+}
+
+.dashboard-header-spacer {
+  padding-top: 15px;
+}
+
+.dashboard-link {
+  text-align: center;
+}
+
+.dashboard-link a {
+  cursor: pointer;
+}
+
+.dashboard-icon {
+  color: black;
+}
+
+.dashboard-tab-container {
+  border-left: 1px solid $color-gray-2;
+  border-right: 1px solid $color-gray-2;
+  border-bottom: 1px solid $color-gray-2;
+}
+
+.dashboard-tab-panel > li > a {
+  padding: 0px 15px !important;
+}
+
+.dashboard-tab {
+  border: 0px;
+  border-radius: 4px 4px 0px 0px;
+  margin-right: 1px;
+  font-size: 13px;
+  line-height: 25px;
+  margin-top: 5px;
+}
+
+.dashboard-tab.active {
+  margin-top: 0px;
+  line-height: 30px;
+}
+
+.dashboard-tab-btn-group {
+  background-color: $color-gray-3;
+  border: 1px solid $color-gray-4;
+  left: 0px;
+  right: 0px;
+  padding: 2px;
+}
+
+.dashboard-tab-btn-group button {
+  padding: 5px;
+}
+
+.dashboard-tab-btn-group > button {
+  margin: 2px 3px 2px 0px;
+  min-width: 40px;
+}
+
+.dashboard-tab-btn-group > button:first-child {
+  margin-left: 3px;
+}
+
+.dashboard-tab-btn-group > button:last-child {
+  margin-right: 3px;
+}
+
+.graph-container {
+  margin-top: 10px;
+  height: 150px;
+}
+
+.graph-error {
+  background-color: $color-gray-2;
+  padding-top: 20px
+}
+
+.grid-error {
+  background-color: $color-gray-2;
+  padding-top: 47px;
+  padding-bottom: 31px;
+}
diff --git a/web/pgadmin/static/scss/pgadmin.scss 
b/web/pgadmin/static/scss/pgadmin.scss
index 42f04d2a..13968a2b 100644
--- a/web/pgadmin/static/scss/pgadmin.scss
+++ b/web/pgadmin/static/scss/pgadmin.scss
@@ -18,3 +18,5 @@ $enable-flex: true;
 @import 'alertify.overrides';
 @import 'backform.overrides';
 @import 'sqleditor/history';
+
+@import 'dashboard/dashboard';
diff --git a/web/regression/javascript/alerts/alertify_wrapper_spec.js 
b/web/regression/javascript/alerts/alertify_wrapper_spec.js
deleted file mode 100644
index 0701b1cc..00000000
--- a/web/regression/javascript/alerts/alertify_wrapper_spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-//////////////////////////////////////////////////////////////////////////
-//
-// pgAdmin 4 - PostgreSQL Tools
-//
-// Copyright (C) 2013 - 2017, The pgAdmin Development Team
-// This software is released under the PostgreSQL Licence
-//
-//////////////////////////////////////////////////////////////////////////
-import alertify from 'pgadmin.alertifyjs';
-
-describe('alertify_wrapper', function () {
-  describe('success', function () {
-    it('calls the success function from alertify and adds the checkmark to the 
element', function () {
-      spyOn(alertify, 'orig_success');
-
-      alertify.success('Yay, congrats!', 1);
-
-      var calledWithMessage = alertify.orig_success.calls.mostRecent().args[0];
-
-      expect(calledWithMessage).toContain('Yay, congrats!');
-      expect(calledWithMessage).toContain('class="fa fa-check"');
-    });
-  });
-
-  describe('error', function () {
-    it('calls the error function from alertify and adds the warning symbol to 
the element', function () {
-      spyOn(alertify, 'orig_error');
-
-      alertify.error('bad, very bad', 1);
-
-      var calledWithMessage = alertify.orig_error.calls.mostRecent().args[0];
-
-      expect(calledWithMessage).toContain('bad, very bad');
-      expect(calledWithMessage).toContain('class="fa 
fa-exclamation-triangle"');
-    });
-  });
-});

Reply via email to