diff options
Diffstat (limited to 'app/assets/javascripts/analytics/cycle_analytics/store/getters.js')
-rw-r--r-- | app/assets/javascripts/analytics/cycle_analytics/store/getters.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/getters.js b/app/assets/javascripts/analytics/cycle_analytics/store/getters.js new file mode 100644 index 00000000000..83068cabf0f --- /dev/null +++ b/app/assets/javascripts/analytics/cycle_analytics/store/getters.js @@ -0,0 +1,57 @@ +import { dateFormats } from '~/analytics/shared/constants'; +import dateFormat from '~/lib/dateformat'; +import { filterToQueryObject } from '~/vue_shared/components/filtered_search_bar/filtered_search_utils'; +import { PAGINATION_TYPE } from '../constants'; +import { transformStagesForPathNavigation, filterStagesByHiddenStatus } from '../utils'; + +export const pathNavigationData = ({ stages, medians, stageCounts, selectedStage }) => { + return transformStagesForPathNavigation({ + stages: filterStagesByHiddenStatus(stages, false), + medians, + stageCounts, + selectedStage, + }); +}; + +export const requestParams = (state) => { + const { + endpoints: { fullPath }, + selectedValueStream: { id: valueStreamId }, + selectedStage: { id: stageId = null }, + } = state; + return { requestPath: fullPath, valueStreamId, stageId }; +}; + +export const paginationParams = ({ pagination: { page, sort, direction } }) => ({ + pagination: PAGINATION_TYPE, + sort, + direction, + page, +}); + +const filterBarParams = ({ filters }) => { + const { + authors: { selected: selectedAuthor }, + milestones: { selected: selectedMilestone }, + assignees: { selectedList: selectedAssigneeList }, + labels: { selectedList: selectedLabelList }, + } = filters; + return filterToQueryObject({ + milestone_title: selectedMilestone, + author_username: selectedAuthor, + label_name: selectedLabelList, + assignee_username: selectedAssigneeList, + }); +}; + +const dateRangeParams = ({ createdAfter, createdBefore }) => ({ + created_after: createdAfter ? dateFormat(createdAfter, dateFormats.isoDate) : null, + created_before: createdBefore ? dateFormat(createdBefore, dateFormats.isoDate) : null, +}); + +export const filterParams = (state) => { + return { + ...filterBarParams(state), + ...dateRangeParams(state), + }; +}; |