Milimetric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/73112
Change subject: basic alert and info support
......................................................................
basic alert and info support
Change-Id: Ib2112b611cda5067c39274cd5f4271900b733342
---
M wikimetrics/static/js/jobCreate.js
A wikimetrics/static/js/site.js
M wikimetrics/templates/layout.html
3 files changed, 94 insertions(+), 34 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics
refs/changes/12/73112/1
diff --git a/wikimetrics/static/js/jobCreate.js
b/wikimetrics/static/js/jobCreate.js
index 08271ed..2c1e071 100644
--- a/wikimetrics/static/js/jobCreate.js
+++ b/wikimetrics/static/js/jobCreate.js
@@ -6,9 +6,11 @@
// fetch wikiusers
if (cohort && !cohort.wikiusers) {
cohort.wikiusers = ko.observableArray([]);
- $.get('/cohorts/detail/' + cohort.id, function(data){
- cohort.wikiusers(data.wikiusers);
- }).fail(failure);
+ $.get('/cohorts/detail/' + cohort.id)
+ .done(site.handleWith(function(data){
+ cohort.wikiusers(data.wikiusers);
+ }))
+ .fail(site.failure);
}
return true;
},
@@ -19,9 +21,11 @@
if (metric) {
if (metric.selected()){
// fetch form to configure metric with
- $.get('/metrics/configure/' + metric.name,
function(configureForm){
- metric.configure(configureForm);
- }).fail(failure);
+ $.get('/metrics/configure/' + metric.name)
+ .done(site.handleWith(function(configureForm){
+ metric.configure(configureForm);
+ }))
+ .fail(site.failure);
} else {
metric.configure('');
}
@@ -40,13 +44,12 @@
});
data = JSON.stringify(data);
- $.ajax({
- type: 'post',
- url: form.attr('action'),
- data: {responses: data},
- }).done(function(response){
- alert(response);
- }).fail(failure);
+ $.ajax({ type: 'post', url: form.attr('action'), data: {responses:
data} })
+ .done(site.handleWith(function(response){
+ // should redirect to the jobs page, so show an error
otherwise
+ site.showError('unexpected response: ' + response);
+ }))
+ .fail(site.failure);
},
saveMetricConfiguration: function(formElement){
@@ -55,29 +58,31 @@
var data = ko.toJS(metric);
delete data.configure;
- $.ajax({
- type: 'post',
- url: form.attr('action'),
- data: data,
- }).done(function(htmlToReplaceWith){
- metric.configure(htmlToReplaceWith);
- }).fail(failure);
+ $.ajax({ type: 'post', url: form.attr('action'), data: data })
+ .done(site.handleWith(function(response){
+ metric.configure(htmlToReplaceWith);
+ }))
+ .fail(site.failure);
},
};
// fetch this user's cohorts
- $.get('/cohorts/list/', function(data){
- setSelected(data.cohorts);
- viewModel.cohorts(data.cohorts);
- }).fail(failure);
+ $.get('/cohorts/list/')
+ .done(site.handleWith(function(data){
+ setSelected(data.cohorts);
+ viewModel.cohorts(data.cohorts);
+ }))
+ .fail(site.failure);
// fetch the list of available metrics
- $.get('/metrics/list/', function(data){
- setTabIds(data.metrics, 'metric');
- setSelected(data.metrics);
- setConfigure(data.metrics);
- viewModel.metrics(data.metrics);
- }).fail(failure);
+ $.get('/metrics/list/')
+ .done(site.handleWith(function(data){
+ setTabIds(data.metrics, 'metric');
+ setSelected(data.metrics);
+ setConfigure(data.metrics);
+ viewModel.metrics(data.metrics);
+ }))
+ .fail(site.failure);
// computed pieces of the viewModel
viewModel.request = ko.observable({
@@ -142,10 +147,6 @@
return '#' + prefix + '-' + this.id;
}, item);
});
- };
-
- function failure(error){
- alert('TODO: report this error in a nicer way ' + error);
};
diff --git a/wikimetrics/static/js/site.js b/wikimetrics/static/js/site.js
new file mode 100644
index 0000000..dd085ec
--- /dev/null
+++ b/wikimetrics/static/js/site.js
@@ -0,0 +1,42 @@
+var site = {
+ handleWith: function(callback){
+ return function(response){
+ if (site.isNormalResponse(response)){
+ callback.call(this, response);
+ }
+ };
+ },
+
+ isNormalResponse: function(response){
+ if (response.isError){
+ site.showError(response.message);
+ return false;
+ } else if (response.isRedirect){
+ site.redirect(response.redirectTo);
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ showError: function (message){
+ if (!site.errorTemplate){
+ site.errorTemplate = $('.errorTemplate').html();
+ }
+ $('.site-messages').append(site.errorTemplate.replace('#####',
message));
+ },
+ showInfo: function (message){
+ if (!site.infoTemplate){
+ site.infoTemplate = $('.infoTemplate').html();
+ }
+ $('.site-messages').append(site.infoTemplate.replace('#####',
message));
+ },
+
+ redirect: function (url){
+ location.href = url;
+ },
+
+ failure: function (error){
+ site.showError(error);
+ },
+};
diff --git a/wikimetrics/templates/layout.html
b/wikimetrics/templates/layout.html
index 50eb443..852df5e 100644
--- a/wikimetrics/templates/layout.html
+++ b/wikimetrics/templates/layout.html
@@ -52,12 +52,29 @@
#}
</ul>
+ <div class="site-messages">
+ </div>
<section class="container">
{% block body %}{% endblock %}
</section>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="{{ url_for('static', filename='js/bootstrap.js') }}"></script>
+ <script src="{{ url_for('static', filename='js/site.js') }}"></script>
{% block scripts %}{% endblock %}
+
+ <script type="text/html" class="errorTemplate">
+ <div class="alert alert-error">
+ <button type="button" class="close"
data-dismiss="alert">×</button>
+ <strong>Error!</strong> #####
+ </div>
+ </script>
+ <script type="text/html" class="infoTemplate">
+ <div class="alert alert-info">
+ <button type="button" class="close"
data-dismiss="alert">×</button>
+ <strong>Info</strong> #####
+ </div>
+ </script>
+</div>
</body>
</html>
--
To view, visit https://gerrit.wikimedia.org/r/73112
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib2112b611cda5067c39274cd5f4271900b733342
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits