@git-temporal/git-temporal-react
Version:
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
61 lines (60 loc) • 2.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const reselect_1 = require("reselect");
const ActionTypes_1 = require("app/actions/ActionTypes");
const search_1 = require("./search");
const dates_1 = require("./dates");
const stateVars_1 = require("./stateVars");
exports.getFilteredCommits = reselect_1.createSelector(stateVars_1.getCommits, stateVars_1.getSearch, stateVars_1.getStartDate, stateVars_1.getEndDate, dates_1.getDefaultedStartDate, dates_1.getDefaultedEndDate, (commits, search, startDate, endDate, defaultedStartDate, defaultedEndDate) => {
const filteredCommits = !search_1.hasSearch(search) && !dates_1.hasDates(startDate, endDate)
? commits.slice(0)
: commits.filter(commit => {
return (search_1.commitsMatchSearch(commit, search) &&
dates_1.commitsMatchDates(commit, defaultedStartDate, defaultedEndDate));
});
return filteredCommits;
});
exports.getFirstFilteredCommit = reselect_1.createSelector(exports.getFilteredCommits, commits => {
return commits[0];
});
exports.getLastFilteredCommit = reselect_1.createSelector(exports.getFilteredCommits, commits => {
return commits[commits.length - 1];
});
exports.getFilteredSortedCommits = reselect_1.createSelector(exports.getFilteredCommits, stateVars_1.getCommitsContainerSort, (commits, commitsContainerSort) => {
return commits.sort((a, b) => {
switch (commitsContainerSort) {
case ActionTypes_1.CommitsContainerSorts.LINES:
return (b.linesAdded + b.linesDeleted - (a.linesAdded + a.linesDeleted));
case ActionTypes_1.CommitsContainerSorts.TIME:
return b.authorDate - a.authorDate;
}
return 0;
});
});
exports.getAreCommitsFiltered = reselect_1.createSelector(stateVars_1.getStartDate, stateVars_1.getEndDate, stateVars_1.getSearch, (startDate, endDate, search) => {
return startDate || endDate || (search != null && search.trim().length > 0);
});
exports.getCommitsForTimeplot = reselect_1.createSelector(stateVars_1.getCommits, stateVars_1.getSearch, (commits, search) => {
const filteredCommits = !search_1.hasSearch(search)
? commits.slice(0)
: commits.filter(commit => {
return search_1.commitsMatchSearch(commit, search);
});
return filteredCommits;
});
exports.getAuthorDateRange = reselect_1.createSelector(exports.getFilteredCommits, commits => {
let minAuthorDate = Date.now();
let maxAuthorDate = 0;
for (const commit of commits) {
if (commit.authorDate < minAuthorDate) {
minAuthorDate = commit.authorDate;
}
if (commit.authorDate > maxAuthorDate) {
maxAuthorDate = commit.authorDate;
}
}
return {
minAuthorDate,
maxAuthorDate,
};
});