Add a refresh button to problems on dashboard, so you can check for problems again
This commit is contained in:
parent
9a5706241b
commit
2b5a2b5fce
|
@ -9,8 +9,37 @@
|
||||||
Discourse.AdminDashboardController = Ember.Controller.extend({
|
Discourse.AdminDashboardController = Ember.Controller.extend({
|
||||||
loading: true,
|
loading: true,
|
||||||
versionCheck: null,
|
versionCheck: null,
|
||||||
|
problemsCheckInterval: '1 minute ago',
|
||||||
|
|
||||||
foundProblems: function() {
|
foundProblems: function() {
|
||||||
return(this.get('problems') && this.get('problems').length > 0);
|
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')
|
||||||
});
|
});
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
**/
|
**/
|
||||||
Discourse.AdminDashboardRoute = Discourse.Route.extend({
|
Discourse.AdminDashboardRoute = Discourse.Route.extend({
|
||||||
|
|
||||||
problemsCheckInterval: '1 minute ago',
|
|
||||||
|
|
||||||
setupController: function(c) {
|
setupController: function(c) {
|
||||||
this.fetchDashboardData(c);
|
this.fetchDashboardData(c);
|
||||||
this.fetchGithubCommits(c);
|
this.fetchGithubCommits(c);
|
||||||
|
@ -35,18 +33,9 @@ Discourse.AdminDashboardRoute = Discourse.Route.extend({
|
||||||
c.set('problems', d.problems);
|
c.set('problems', d.problems);
|
||||||
c.set('loading', false);
|
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());
|
c.set('problemsFetchedAt', new Date());
|
||||||
var _this = this;
|
c.loadProblems();
|
||||||
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';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -3,17 +3,34 @@
|
||||||
<div class="dashboard-stats detected-problems">
|
<div class="dashboard-stats detected-problems">
|
||||||
<div class="look-here"><i class="icon icon-warning-sign"></i></div>
|
<div class="look-here"><i class="icon icon-warning-sign"></i></div>
|
||||||
<div class="problem-messages">
|
<div class="problem-messages">
|
||||||
<p>
|
<p {{bindAttr class="loadingProblems:invisible"}}>
|
||||||
{{i18n admin.dashboard.problems_found}}
|
{{i18n admin.dashboard.problems_found}}
|
||||||
<ul>
|
<ul {{bindAttr class="loadingProblems:invisible"}}>
|
||||||
{{#each problem in problems}}
|
{{#each problem in problems}}
|
||||||
<li>{{{problem}}}</li>
|
<li>{{{problem}}}</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
|
<p class="actions">
|
||||||
|
<small>{{i18n admin.dashboard.last_checked}}: {{problemsTimestamp}}</small>
|
||||||
|
<button {{action loadProblems}} class="btn btn-small"><i class="icon icon-refresh"></i>{{i18n admin.dashboard.refresh_problems}}</button>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
|
{{else}}
|
||||||
|
{{#if thereWereProblems}}
|
||||||
|
<div class="dashboard-stats detected-problems">
|
||||||
|
<div class="look-here"> </div>
|
||||||
|
<div class="problem-messages">
|
||||||
|
<p>
|
||||||
|
{{i18n admin.dashboard.no_problems}}
|
||||||
|
<button {{action loadProblems}} class="btn btn-small"><i class="icon icon-refresh"></i>{{i18n admin.dashboard.refresh_problems}}</button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if Discourse.SiteSettings.version_checks}}
|
{{#if Discourse.SiteSettings.version_checks}}
|
||||||
|
|
|
@ -407,6 +407,9 @@ table {
|
||||||
a {
|
a {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
.actions {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -818,6 +818,9 @@ en:
|
||||||
latest_version: "Latest"
|
latest_version: "Latest"
|
||||||
update_often: 'Please update often!'
|
update_often: 'Please update often!'
|
||||||
problems_found: "Some problems have been found with your installation of Discourse:"
|
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:'
|
moderators: 'Moderators:'
|
||||||
admins: 'Admins:'
|
admins: 'Admins:'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue