@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
86 lines (74 loc) • 3.06 kB
text/typescript
// (C) 2007-2020 GoodData Corporation
import { AFM, VisualizationObject } from "@gooddata/typings";
import VisualizationObjectAttributeFilter = VisualizationObject.VisualizationObjectAttributeFilter;
import IVisualizationObjectRelativeDateFilter = VisualizationObject.IVisualizationObjectRelativeDateFilter;
import IVisualizationObjectAbsoluteDateFilter = VisualizationObject.IVisualizationObjectAbsoluteDateFilter;
import VisualizationObjectFilter = VisualizationObject.VisualizationObjectFilter;
import VisualizationObjectExtendedFilter = VisualizationObject.VisualizationObjectExtendedFilter;
function convertAttributeFilter(filter: VisualizationObjectAttributeFilter): AFM.FilterItem | null {
if (!VisualizationObject.isPositiveAttributeFilter(filter)) {
if (!filter.negativeAttributeFilter.notIn.length) {
return null;
}
}
return filter;
}
export function convertAbsoluteDateFilter(
filter: IVisualizationObjectAbsoluteDateFilter | AFM.IAbsoluteDateFilter,
): AFM.FilterItem | null {
const { absoluteDateFilter } = filter;
if (absoluteDateFilter.from === undefined || absoluteDateFilter.to === undefined) {
return null;
}
return {
absoluteDateFilter: {
dataSet: absoluteDateFilter.dataSet,
from: String(absoluteDateFilter.from),
to: String(absoluteDateFilter.to),
},
};
}
export function convertRelativeDateFilter(
filter: IVisualizationObjectRelativeDateFilter | AFM.IRelativeDateFilter,
): AFM.FilterItem | null {
const { relativeDateFilter } = filter;
if (relativeDateFilter.from === undefined || !relativeDateFilter.to === undefined) {
return null;
}
return {
relativeDateFilter: {
dataSet: relativeDateFilter.dataSet,
granularity: relativeDateFilter.granularity,
from: Number(relativeDateFilter.from),
to: Number(relativeDateFilter.to),
},
};
}
export function convertMeasureValueFilter(
filter: VisualizationObject.IMeasureValueFilter | AFM.IMeasureValueFilter,
): AFM.IMeasureValueFilter | null {
if (filter.measureValueFilter.condition === undefined) {
return null;
}
return filter;
}
export function convertVisualizationObjectFilter(filter: VisualizationObjectFilter): AFM.FilterItem | null {
if (VisualizationObject.isAttributeFilter(filter)) {
return convertAttributeFilter(filter);
} else if (VisualizationObject.isAbsoluteDateFilter(filter)) {
return convertAbsoluteDateFilter(filter);
} else {
return convertRelativeDateFilter(filter);
}
}
export function convertVisualizationObjectExtendedFilter(
filter: VisualizationObjectExtendedFilter,
): AFM.ExtendedFilter | null {
if (VisualizationObject.isMeasureValueFilter(filter)) {
return convertMeasureValueFilter(filter);
} else if (VisualizationObject.isRankingFilter(filter)) {
return filter;
} else {
return convertVisualizationObjectFilter(filter);
}
}