mirror of
https://github.com/getredash/redash.git
synced 2025-12-25 01:03:20 -05:00
Merge pull request #1946 from Posnet/select-all
Add ability to easily select all for multi-filter
This commit is contained in:
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user