export interface SerializedTableFilter { class: string isVisible: boolean } export interface SerializedTextTableFilter extends SerializedTableFilter { class: 'TextTableFilter' value: string searchParam: string } export function isSerializedTextTableFilter(data: SerializedTableFilter): data is SerializedTextTableFilter { return data.class === 'TextTableFilter' } export interface SerializedNumberTableFilter extends SerializedTableFilter { class: 'NumberTableFilter' value: number | undefined searchParam: string } export function isSerializedNumberTableFilter(data: SerializedTableFilter): data is SerializedNumberTableFilter { return data.class === 'NumberTableFilter' } /** * * Relation select */ export interface SerializedRelationSelectTableFilter extends SerializedTableFilter { class: 'RelationSelectTableFilter' value: { id: string, name: string } | undefined endpoint: string selectedParam: string selectedValueKey: string } export function isSerializedRelationSelectTableFilter(data: SerializedTableFilter): data is SerializedRelationSelectTableFilter { return data.class === 'RelationSelectTableFilter' } export interface SerializedMultipleRelationSelectTableFilter extends SerializedTableFilter { class: 'MultipleRelationSelectTableFilter' value: Array<{ id: string, name: string }> endpoint: string selectedParam: string selectedValueKey: string } export function isSerializedMultipleRelationSelectTableFilter(data: SerializedTableFilter): data is SerializedMultipleRelationSelectTableFilter { return data.class === 'MultipleRelationSelectTableFilter' } export interface SerializedMultipleParamsRelationSelectTableFilter extends SerializedTableFilter { class: 'MultipleParamsRelationSelectTableFilter' value: { [key: string]: string } | undefined endpoint: string selectedParamsMap: { [key: string]: string } titleKey: string } export function isSerializedMultipleParamsRelationSelectTableFilter(data: SerializedTableFilter): data is SerializedMultipleParamsRelationSelectTableFilter { return data.class === 'MultipleParamsRelationSelectTableFilter' } /** * * Enum select */ export interface SerializedEnumSelectTableFilter extends SerializedTableFilter { class: 'EnumSelectTableFilter' value: { id: string, name: string } | undefined endpoint: string selectedParam: string selectedValueKey: string } export function isSerializedEnumSelectTableFilter(data: SerializedTableFilter): data is SerializedEnumSelectTableFilter { return data.class === 'EnumSelectTableFilter' } export interface SerializedMultipleEnumSelectTableFilter extends SerializedTableFilter { class: 'MultipleEnumSelectTableFilter' value: Array<{ id: string, name: string }> endpoint: string selectedParam: string selectedValueKey: string } export function isSerializedMultipleEnumSelectTableFilter(data: SerializedTableFilter): data is SerializedMultipleEnumSelectTableFilter { return data.class === 'MultipleEnumSelectTableFilter' } /** * * Default select */ export interface SerializedDefaultSelectTableFilter extends SerializedTableFilter { class: 'DefaultSelectTableFilter' value: { id: string, name: string } | undefined selectedParam: string selectedValueKey: string } export function isSerializedDefaultSelectTableFilter(data: SerializedTableFilter): data is SerializedDefaultSelectTableFilter { return data.class === 'DefaultSelectTableFilter' } export interface SerializedMultipleDefaultSelectTableFilter extends SerializedTableFilter { class: 'MultipleDefaultSelectTableFilter' value: Array<{ id: string, name: string }> selectedParam: string selectedValueKey: string } export function isSerializedMultipleDefaultSelectTableFilter(data: SerializedTableFilter): data is SerializedMultipleDefaultSelectTableFilter { return data.class === 'MultipleDefaultSelectTableFilter' } /** * * Calendar */ export interface SerializedCalendarTableFilter extends SerializedTableFilter { class: 'CalendarTableFilter' date: string | undefined dateParam: string } export function isSerializedCalendarTableFilter(data: SerializedTableFilter): data is SerializedCalendarTableFilter { return data.class === 'CalendarTableFilter' } export interface SerializedPeriodCalendarTableFilter extends SerializedTableFilter { class: 'PeriodCalendarTableFilter' endDateParam: string startDateParam: string arkspaceSerializationTypeParam?: string isSetOnlyFullDate: boolean serializationType: 'default' | 'arkspace' endDate?: string startDate?: string } export function isSerializedPeriodCalendarTableFilter(data: SerializedTableFilter): data is SerializedPeriodCalendarTableFilter { return data.class === 'PeriodCalendarTableFilter' } /** * * Range number */ export interface SerializedRangeNumberTableFilter extends SerializedTableFilter { class: 'RangeNumberTableFilter' from: number | undefined to: number | undefined fromParam: string toParam: string serializationType: 'default' | 'arkspace' arkspaceSerializationTypeParam?: string } export function isSerializedRangeNumberTableFilter(data: SerializedTableFilter): data is SerializedRangeNumberTableFilter { return data.class === 'RangeNumberTableFilter' }