Skip to content
Snippets Groups Projects
Commit 7928f6b6 authored by Fatih Acet's avatar Fatih Acet
Browse files

Fix landing widget state and improve Vue with state management.

Former-commit-id: bfbd81a8
parent dea4ae8e
No related branches found
No related tags found
No related merge requests found
((global) => {
 
const COOKIE_NAME = 'cycle_analytics_help_dismissed';
const store = gl.cycleAnalyticsStore = {
isLoading: true,
hasError: false,
isHelpDismissed: $.cookie(COOKIE_NAME),
analytics: {}
};
 
gl.CycleAnalytics = class CycleAnalytics {
constructor() {
const that = this;
 
this.isHelpDismissed = $.cookie(COOKIE_NAME);
this.vue = new Vue({
el: '#cycle-analytics',
name: 'CycleAnalytics',
created: this.fetchData(),
data: this.decorateData({ isLoading: true }),
data: store,
methods: {
dismissLanding() {
that.dismissLanding();
Loading
Loading
@@ -21,6 +26,7 @@
}
 
fetchData(options) {
store.isLoading = true;
options = options || { startDate: 30 };
 
$.ajax({
Loading
Loading
@@ -30,22 +36,20 @@
contentType: 'application/json',
data: { start_date: options.startDate }
}).done((data) => {
this.vue.$data = this.decorateData(data);
this.decorateData(data);
this.initDropdown();
})
.error((data) => {
this.handleError(data);
})
.always(() => {
this.vue.isLoading = false;
store.isLoading = false;
})
}
 
decorateData(data) {
data.summary = data.summary || [];
data.stats = data.stats || [];
data.isHelpDismissed = this.isHelpDismissed;
data.isLoading = data.isLoading || false;
 
data.summary.forEach((item) => {
item.value = item.value || '-';
Loading
Loading
@@ -53,22 +57,18 @@
 
data.stats.forEach((item) => {
item.value = item.value || '- - -';
})
});
 
return data;
store.analytics = data;
}
 
handleError(data) {
this.vue.$data = {
hasError: true,
isHelpDismissed: this.isHelpDismissed
};
store.hasError = true;
new Flash('There was an error while fetching cycle analytics data.', 'alert');
}
 
dismissLanding() {
this.vue.isHelpDismissed = true;
store.isHelpDismissed = true;
$.cookie(COOKIE_NAME, true);
}
 
Loading
Loading
@@ -82,7 +82,6 @@
const value = $target.data('value');
 
$label.text($target.text().trim());
this.vue.isLoading = true;
this.fetchData({ startDate: value });
})
}
Loading
Loading
Loading
Loading
@@ -27,7 +27,7 @@
.content-block
.container-fluid
.row
.col-sm-3.col-xs-12.column{"v-for" => "item in summary"}
.col-sm-3.col-xs-12.column{"v-for" => "item in analytics.summary"}
%h3.header {{item.value}}
%p.text {{item.title}}
 
Loading
Loading
@@ -46,7 +46,7 @@
 
.bordered-box
%ul.content-list
%li{"v-for" => "item in stats"}
%li{"v-for" => "item in analytics.stats"}
.container-fluid
.row
.col-xs-8.title-col
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment