Merge pull request #1946 from Posnet/select-all

Add ability to easily select all for multi-filter
This commit is contained in:
Arik Fraimovich
2017-09-13 14:29:15 +03:00
committed by GitHub

View File

@@ -1,10 +1,13 @@
import debug from 'debug';
import moment from 'moment';
import { uniq, contains, values, some, each, isArray, isNumber, isString } from 'underscore';
import { uniq, contains, values, some, each, isArray, isNumber, isString, includes } from 'underscore';
const logger = debug('redash:services:QueryResult');
const filterTypes = ['filter', 'multi-filter', 'multiFilter'];
const ALL_VALUES = '*';
const NONE_VALUES = '-';
function getColumnNameWithoutType(column) {
let typeSplit;
if (column.indexOf('::') !== -1) {
@@ -208,6 +211,21 @@ function QueryResultService($resource, $timeout, $q) {
this.filterFreeze = filterFreeze;
if (filters) {
filters.forEach((filter) => {
if (filter.multiple && includes(filter.current, ALL_VALUES)) {
filter.current = filter.values.slice(1);
}
if (filter.current.length === (filter.values.length - 1)) {
filter.values[0] = NONE_VALUES;
}
if (filter.multiple && includes(filter.current, NONE_VALUES)) {
filter.current = [];
filter.values[0] = ALL_VALUES;
}
});
this.filteredData = this.query_result.data.rows.filter(row =>
filters.reduce((memo, filter) => {
if (!isArray(filter.current)) {
@@ -378,6 +396,12 @@ function QueryResultService($resource, $timeout, $q) {
});
});
filters.forEach((filter) => {
if (filter.multiple) {
filter.values.unshift(ALL_VALUES);
}
});
filters.forEach((filter) => {
filter.values = uniq(filter.values, (v) => {
if (moment.isMoment(v)) {