Commit 6c0811e7 authored by Mark Fletcher's avatar Mark Fletcher

Initialize chart data in same order as config

- Chart data loads faster and leads to charts render in wrong order
- Populate chart_data object keys before loading to ensure the order
parent 537dd779
...@@ -49,7 +49,6 @@ export default { ...@@ -49,7 +49,6 @@ export default {
}, },
watch: { watch: {
pageConfig() { pageConfig() {
this.setChartData({});
this.setPageLoading(true); this.setPageLoading(true);
this.fetchCharts(); this.fetchCharts();
}, },
...@@ -58,7 +57,7 @@ export default { ...@@ -58,7 +57,7 @@ export default {
this.fetchCharts(); this.fetchCharts();
}, },
methods: { methods: {
...mapActions('insights', ['fetchChartData', 'setChartData', 'setPageLoading']), ...mapActions('insights', ['fetchChartData', 'initChartData', 'setPageLoading']),
chartType(type) { chartType(type) {
switch (type) { switch (type) {
case 'line': case 'line':
...@@ -70,6 +69,8 @@ export default { ...@@ -70,6 +69,8 @@ export default {
}, },
fetchCharts() { fetchCharts() {
if (this.hasChartsConfigured) { if (this.hasChartsConfigured) {
this.initChartData(this.chartKeys);
const insightsRequests = this.charts.map(chart => const insightsRequests = this.charts.map(chart =>
this.fetchChartData({ endpoint: this.queryEndpoint, chart }), this.fetchChartData({ endpoint: this.queryEndpoint, chart }),
); );
......
...@@ -54,7 +54,7 @@ export const setActiveTab = ({ commit, state }, key) => { ...@@ -54,7 +54,7 @@ export const setActiveTab = ({ commit, state }, key) => {
commit(types.SET_ACTIVE_PAGE, page); commit(types.SET_ACTIVE_PAGE, page);
}; };
export const setChartData = ({ commit }, store) => commit(types.SET_CHART_DATA, store); export const initChartData = ({ commit }, store) => commit(types.INIT_CHART_DATA, store);
export const setPageLoading = ({ commit }, pageLoading) => export const setPageLoading = ({ commit }, pageLoading) =>
commit(types.SET_PAGE_LOADING, pageLoading); commit(types.SET_PAGE_LOADING, pageLoading);
......
...@@ -6,5 +6,5 @@ export const RECEIVE_CHART_SUCCESS = 'RECEIVE_CHART_SUCCESS'; ...@@ -6,5 +6,5 @@ export const RECEIVE_CHART_SUCCESS = 'RECEIVE_CHART_SUCCESS';
export const RECEIVE_CHART_ERROR = 'RECEIVE_CHART_ERROR'; export const RECEIVE_CHART_ERROR = 'RECEIVE_CHART_ERROR';
export const SET_ACTIVE_TAB = 'SET_ACTIVE_TAB'; export const SET_ACTIVE_TAB = 'SET_ACTIVE_TAB';
export const SET_ACTIVE_PAGE = 'SET_ACTIVE_PAGE'; export const SET_ACTIVE_PAGE = 'SET_ACTIVE_PAGE';
export const SET_CHART_DATA = 'SET_CHART_DATA';
export const SET_PAGE_LOADING = 'SET_PAGE_LOADING'; export const SET_PAGE_LOADING = 'SET_PAGE_LOADING';
export const INIT_CHART_DATA = 'INIT_CHART_DATA';
...@@ -40,8 +40,11 @@ export default { ...@@ -40,8 +40,11 @@ export default {
[types.SET_ACTIVE_PAGE](state, pageData) { [types.SET_ACTIVE_PAGE](state, pageData) {
state.activePage = pageData; state.activePage = pageData;
}, },
[types.SET_CHART_DATA](state, chartData) { [types.INIT_CHART_DATA](state, keys) {
state.chartData = chartData; state.chartData = keys.reduce((acc, key) => {
acc[key] = {};
return acc;
}, {});
}, },
[types.SET_PAGE_LOADING](state, pageLoading) { [types.SET_PAGE_LOADING](state, pageLoading) {
state.pageLoading = pageLoading; state.pageLoading = pageLoading;
......
---
title: Initialize chart data in same order as config
merge_request: 14283
author:
type: fixed
...@@ -164,13 +164,13 @@ describe('Insights mutations', () => { ...@@ -164,13 +164,13 @@ describe('Insights mutations', () => {
}); });
}); });
describe(types.SET_CHART_DATA, () => { describe(types.INIT_CHART_DATA, () => {
const chartData = { a: { data: 'data' } }; const keys = ['a', 'b'];
it('sets chartData state', () => { it('sets chartData state', () => {
mutations[types.SET_CHART_DATA](state, chartData); mutations[types.INIT_CHART_DATA](state, keys);
expect(state.chartData).toBe(chartData); expect(state.chartData).toEqual({ a: {}, b: {} });
}); });
}); });
......
...@@ -244,15 +244,15 @@ describe('Insights store actions', () => { ...@@ -244,15 +244,15 @@ describe('Insights store actions', () => {
}); });
}); });
describe('setChartData', () => { describe('initChartData', () => {
it('commits SET_CHART_DATA', done => { it('commits INIT_CHART_DATA', done => {
const chartData = { a: { data: 'data' } }; const keys = ['a', 'b'];
testAction( testAction(
actions.setChartData, actions.initChartData,
chartData, keys,
null, null,
[{ type: 'SET_CHART_DATA', payload: chartData }], [{ type: 'INIT_CHART_DATA', payload: keys }],
[], [],
done, done,
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment