From 2b5a2b5fcef721efae5eb514e4a6560d7038177c Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Tue, 16 Apr 2013 12:09:37 -0400 Subject: [PATCH] Add a refresh button to problems on dashboard, so you can check for problems again --- .../controllers/admin_dashboard_controller.js | 31 ++++++++++++++++++- .../admin/routes/admin_dashboard_route.js | 15 ++------- .../admin/templates/dashboard.js.handlebars | 21 +++++++++++-- app/assets/stylesheets/admin/admin_base.scss | 3 ++ config/locales/client.en.yml | 3 ++ 5 files changed, 57 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js b/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js index a62912807e0..2f85858e8c8 100644 --- a/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js @@ -9,8 +9,37 @@ Discourse.AdminDashboardController = Ember.Controller.extend({ loading: true, versionCheck: null, + problemsCheckInterval: '1 minute ago', foundProblems: function() { return(this.get('problems') && this.get('problems').length > 0); - }.property('problems') + }.property('problems'), + + thereWereProblems: function() { + if( this.get('foundProblems') ) { + this.set('hadProblems', true); + return true; + } else { + return this.get('hadProblems') || false; + } + }.property('foundProblems'), + + loadProblems: function() { + this.set('loadingProblems', true); + this.set('problemsFetchedAt', new Date()); + var c = this; + Discourse.AdminDashboard.fetchProblems().then(function(d) { + c.set('problems', d.problems); + c.set('loadingProblems', false); + if( d.problems && d.problems.length > 0 ) { + c.problemsCheckInterval = '1 minute ago'; + } else { + c.problemsCheckInterval = '10 minutes ago'; + } + }); + }, + + problemsTimestamp: function() { + return this.get('problemsFetchedAt').long(); + }.property('problemsFetchedAt') }); diff --git a/app/assets/javascripts/admin/routes/admin_dashboard_route.js b/app/assets/javascripts/admin/routes/admin_dashboard_route.js index 41e78f8ebe1..72d097c250c 100644 --- a/app/assets/javascripts/admin/routes/admin_dashboard_route.js +++ b/app/assets/javascripts/admin/routes/admin_dashboard_route.js @@ -8,8 +8,6 @@ **/ Discourse.AdminDashboardRoute = Discourse.Route.extend({ - problemsCheckInterval: '1 minute ago', - setupController: function(c) { this.fetchDashboardData(c); this.fetchGithubCommits(c); @@ -35,18 +33,9 @@ Discourse.AdminDashboardRoute = Discourse.Route.extend({ c.set('problems', d.problems); c.set('loading', false); }); - } else if( !c.get('problemsFetchedAt') || Date.create(this.problemsCheckInterval, 'en') > c.get('problemsFetchedAt') ) { + } else if( !c.get('problemsFetchedAt') || Date.create(c.problemsCheckInterval, 'en') > c.get('problemsFetchedAt') ) { c.set('problemsFetchedAt', new Date()); - var _this = this; - Discourse.AdminDashboard.fetchProblems().then(function(d) { - c.set('problems', d.problems); - c.set('loading', false); - if( d.problems && d.problems.length > 0 ) { - _this.problemsCheckInterval = '1 minute ago'; - } else { - _this.problemsCheckInterval = '10 minutes ago'; - } - }); + c.loadProblems(); } }, diff --git a/app/assets/javascripts/admin/templates/dashboard.js.handlebars b/app/assets/javascripts/admin/templates/dashboard.js.handlebars index 5ddaddd4a64..f011c4e6872 100644 --- a/app/assets/javascripts/admin/templates/dashboard.js.handlebars +++ b/app/assets/javascripts/admin/templates/dashboard.js.handlebars @@ -3,17 +3,34 @@
-

+

{{i18n admin.dashboard.problems_found}} -

    +
      {{#each problem in problems}}
    • {{{problem}}}
    • {{/each}}

    +

    + {{i18n admin.dashboard.last_checked}}: {{problemsTimestamp}} + +

+ {{else}} + {{#if thereWereProblems}} +
+
 
+
+

+ {{i18n admin.dashboard.no_problems}} + +

+
+
+
+ {{/if}} {{/if}} {{#if Discourse.SiteSettings.version_checks}} diff --git a/app/assets/stylesheets/admin/admin_base.scss b/app/assets/stylesheets/admin/admin_base.scss index 2595582e44d..337fec6a325 100644 --- a/app/assets/stylesheets/admin/admin_base.scss +++ b/app/assets/stylesheets/admin/admin_base.scss @@ -407,6 +407,9 @@ table { a { text-decoration: underline; } + .actions { + text-align: right; + } } } diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index c88b605544c..83c9e622c82 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -818,6 +818,9 @@ en: latest_version: "Latest" update_often: 'Please update often!' problems_found: "Some problems have been found with your installation of Discourse:" + last_checked: "Last checked" + refresh_problems: "Refresh" + no_problems: "No problems were found." moderators: 'Moderators:' admins: 'Admins:'