2017-02-11 20:39:38 -05:00
|
|
|
var assign = require('object-assign');
|
|
|
|
|
|
|
|
var ReportConstants = require('../constants/ReportConstants');
|
|
|
|
var UserConstants = require('../constants/UserConstants');
|
|
|
|
|
2017-06-16 20:55:22 -04:00
|
|
|
const initialState = {
|
|
|
|
map: {},
|
|
|
|
tabulations: {},
|
|
|
|
list: [],
|
|
|
|
selected: -1,
|
|
|
|
selectedTabulation: null,
|
|
|
|
seriesTraversal: []
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = function(state = initialState, action) {
|
2017-02-11 20:39:38 -05:00
|
|
|
switch (action.type) {
|
2017-06-16 20:55:22 -04:00
|
|
|
case ReportConstants.REPORTS_FETCHED:
|
|
|
|
var selected = -1;
|
|
|
|
var reports = {};
|
|
|
|
var list = [];
|
|
|
|
for (var i = 0; i < action.reports.length; i++) {
|
|
|
|
var report = action.reports[i];
|
|
|
|
reports[report.ReportId] = report;
|
|
|
|
list.push(report.ReportId);
|
|
|
|
if (state.selected == report.ReportId)
|
|
|
|
selected = state.selected;
|
|
|
|
}
|
2017-02-11 20:39:38 -05:00
|
|
|
return assign({}, state, {
|
2017-06-16 20:55:22 -04:00
|
|
|
map: reports,
|
|
|
|
list: list,
|
|
|
|
tabulations: {},
|
|
|
|
selected: selected
|
|
|
|
});
|
|
|
|
case ReportConstants.REPORT_CREATED:
|
|
|
|
case ReportConstants.REPORT_UPDATED:
|
|
|
|
var report = action.report;
|
|
|
|
var reports = assign({}, state.map, {
|
2017-02-11 20:39:38 -05:00
|
|
|
[report.ReportId]: report
|
|
|
|
});
|
2017-06-16 20:55:22 -04:00
|
|
|
|
|
|
|
var list = [];
|
|
|
|
for (var reportId in reports) {
|
|
|
|
if (reports.hasOwnProperty(reportId))
|
|
|
|
list.push(report.ReportId);
|
|
|
|
}
|
|
|
|
return assign({}, state, {
|
|
|
|
map: reports,
|
|
|
|
list: list
|
|
|
|
});
|
|
|
|
case ReportConstants.REPORT_REMOVED:
|
|
|
|
var selected = state.selected;
|
|
|
|
if (action.reportId == selected)
|
|
|
|
selected = -1;
|
|
|
|
var reports = assign({}, state.map);
|
|
|
|
delete reports[action.reportId];
|
|
|
|
return assign({}, state, {
|
|
|
|
map: reports,
|
|
|
|
selected: selected
|
|
|
|
});
|
|
|
|
case ReportConstants.REPORT_SELECTED:
|
|
|
|
return assign({}, state, {
|
|
|
|
selected: action.report.ReportId,
|
|
|
|
selectedTabulation: null,
|
|
|
|
seriesTraversal: []
|
|
|
|
});
|
2017-06-17 10:28:50 -04:00
|
|
|
case ReportConstants.REPORT_TABULATED:
|
2017-06-16 20:55:22 -04:00
|
|
|
var tabulation = action.tabulation;
|
2017-06-17 10:28:50 -04:00
|
|
|
var tabulations = assign({}, state.tabulations, {
|
2017-06-16 20:55:22 -04:00
|
|
|
[tabulation.ReportId]: tabulation
|
|
|
|
});
|
2017-06-17 10:28:50 -04:00
|
|
|
return assign({}, state, {
|
|
|
|
tabulations: tabulations
|
|
|
|
});
|
2017-06-16 20:55:22 -04:00
|
|
|
case ReportConstants.SERIES_SELECTED:
|
2017-06-17 10:28:50 -04:00
|
|
|
return assign({}, state, {
|
2017-06-16 20:55:22 -04:00
|
|
|
selectedTabulation: action.tabulation,
|
|
|
|
seriesTraversal: action.seriesTraversal
|
2017-06-17 10:28:50 -04:00
|
|
|
});
|
2017-02-11 20:39:38 -05:00
|
|
|
case UserConstants.USER_LOGGEDOUT:
|
2017-06-16 20:55:22 -04:00
|
|
|
return initialState;
|
2017-02-11 20:39:38 -05:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
};
|