diff options
Diffstat (limited to 'sdnr/wt/odlux/framework/src/components/material-table/utilities.ts')
-rw-r--r-- | sdnr/wt/odlux/framework/src/components/material-table/utilities.ts | 357 |
1 files changed, 0 insertions, 357 deletions
diff --git a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts b/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts deleted file mode 100644 index e2fda7647..000000000 --- a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts +++ /dev/null @@ -1,357 +0,0 @@ -/** - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt odlux - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -import { Action, IActionHandler } from '../../flux/action'; -import { Dispatch } from '../../flux/store'; - -import { AddErrorInfoAction } from '../../actions/errorActions'; -import { IApplicationStoreState } from '../../store/applicationStore'; - -export const RowDisabled = Symbol("RowDisabled"); -import { DataCallback } from "."; - -export interface IExternalTableState<TData> { - order: 'asc' | 'desc'; - orderBy: string | null; - selected: any[] | null; - hiddenColumns: string[] - rows: (TData & { [RowDisabled]?: boolean })[]; - total: number; - page: number; - rowsPerPage: number; - loading: boolean; - showFilter: boolean; - filter: { [property: string]: string }; - preFilter: { [property: string]: string }; -} - -export type ExternalMethodes<TData> = { - reloadAction: (dispatch: Dispatch, getAppState: () => IApplicationStoreState) => Promise<void | AddErrorInfoAction>; - createActions: (dispatch: Dispatch, skipRefresh?: boolean) => { - onRefresh: () => void; - onHandleRequestSort: (orderBy: string) => void; - onHandleExplicitRequestSort: (property: string, sortOrder: "asc" | "desc") => void; - onToggleFilter: (refresh?: boolean | undefined) => void; - onFilterChanged: (property: string, filterTerm: string) => void; - onHandleChangePage: (page: number) => void; - onHandleChangeRowsPerPage: (rowsPerPage: number | null) => void; - onHideColumns: (columnName: string[]) => void; - onShowColumns: (columnName: string[]) => void; - onClearFilters: () => void; - }, - createPreActions: (dispatch: Dispatch, skipRefresh?: boolean) => { - onPreFilterChanged: (preFilter: { - [key: string]: string; - }) => void; - }; - createProperties: (state: IApplicationStoreState) => IExternalTableState<TData>; - actionHandler: IActionHandler<IExternalTableState<TData>, Action>; -} - - -/** Create an actionHandler and actions for external table states. */ -export function createExternal<TData>(callback: DataCallback<TData>, selectState: (appState: IApplicationStoreState) => IExternalTableState<TData>) : ExternalMethodes<TData> ; -export function createExternal<TData>(callback: DataCallback<TData>, selectState: (appState: IApplicationStoreState) => IExternalTableState<TData>, disableRow: (data: TData) => boolean) : ExternalMethodes<TData>; -export function createExternal<TData>(callback: DataCallback<TData>, selectState: (appState: IApplicationStoreState) => IExternalTableState<TData>, disableRow?: (data: TData) => boolean) : ExternalMethodes<TData> { - - //#region Actions - abstract class TableAction extends Action { } - - - class RequestSortAction extends TableAction { - constructor(public orderBy: string) { - super(); - } - } - - class RequestExplicitSortAction extends TableAction { - constructor(public propertyName: string, public sortOrder: "asc" | "desc") { - super(); - } - } - - class SetSelectedAction extends TableAction { - constructor(public selected: TData[] | null) { - super(); - } - } - - class SetPageAction extends TableAction { - constructor(public page: number) { - super(); - } - } - - class SetRowsPerPageAction extends TableAction { - constructor(public rowsPerPage: number) { - super(); - } - } - - class SetPreFilterChangedAction extends TableAction { - constructor(public preFilter: { [key: string]: string }) { - super(); - } - } - - class SetFilterChangedAction extends TableAction { - constructor(public filter: { [key: string]: string }) { - super(); - } - } - - class SetShowFilterAction extends TableAction { - constructor(public show: boolean) { - super(); - } - } - - class RefreshAction extends TableAction { - constructor() { - super(); - } - } - - class SetResultAction extends TableAction { - constructor(public result: { page: number, total: number, rows: TData[] }) { - super(); - } - } - - class HideColumnsAction extends TableAction{ - constructor(public property: string[]){ - super(); - } - } - - class ShowColumnsAction extends TableAction{ - constructor(public property: string[]){ - super(); - } - } - - // #endregion - - //#region Action Handler - const externalTableStateInit: IExternalTableState<TData> = { - order: 'asc', - orderBy: null, - selected: null, - hiddenColumns:[], - rows: [], - total: 0, - page: 0, - rowsPerPage: 10, - loading: false, - showFilter: false, - filter: {}, - preFilter: {} - }; - - const externalTableStateActionHandler: IActionHandler<IExternalTableState<TData>> = (state = externalTableStateInit, action) => { - if (!(action instanceof TableAction)) return state; - if (action instanceof RefreshAction) { - state = { - ...state, - loading: true - } - } else if (action instanceof SetResultAction) { - state = { - ...state, - loading: false, - rows: disableRow - ? action.result.rows.map((row: TData) => ({...row, [RowDisabled]: disableRow(row) })) - : action.result.rows, - total: action.result.total, - page: action.result.page, - } - } else if (action instanceof RequestSortAction) { - state = { - ...state, - loading: true, - orderBy: state.orderBy === action.orderBy && state.order === 'desc' ? null : action.orderBy, - order: state.orderBy === action.orderBy && state.order === 'asc' ? 'desc' : 'asc', - } - } else if (action instanceof RequestExplicitSortAction) { - state = { - ...state, - loading: true, - orderBy: action.propertyName, - order: action.sortOrder - } - } - else if (action instanceof SetShowFilterAction) { - state = { - ...state, - loading: true, - showFilter: action.show - } - } else if (action instanceof SetPreFilterChangedAction) { - state = { - ...state, - loading: true, - preFilter: action.preFilter - } - } else if (action instanceof SetFilterChangedAction) { - state = { - ...state, - loading: true, - filter: action.filter - } - } else if (action instanceof SetPageAction) { - state = { - ...state, - loading: true, - page: action.page - } - } else if (action instanceof SetRowsPerPageAction) { - state = { - ...state, - loading: true, - rowsPerPage: action.rowsPerPage - } - } - else if (action instanceof HideColumnsAction){ - - //merge arrays, remove duplicates - const newArray = [...new Set([...state.hiddenColumns, ...action.property])] - state = {...state, hiddenColumns: newArray}; - } - else if(action instanceof ShowColumnsAction){ - - const newArray = state.hiddenColumns.filter(el=> !action.property.includes(el)); - state = {...state, hiddenColumns: newArray}; - } - - return state; - } - - //const createTableAction(tableAction) - - //#endregion - const reloadAction = (dispatch: Dispatch, getAppState: () => IApplicationStoreState) => { - dispatch(new RefreshAction()); - const ownState = selectState(getAppState()); - const filter = { ...ownState.preFilter, ...(ownState.showFilter && ownState.filter || {}) }; - return Promise.resolve(callback(ownState.page, ownState.rowsPerPage, ownState.orderBy, ownState.order, filter)).then(result => { - - if (ownState.page > 0 && ownState.rowsPerPage * ownState.page > result.total) { //if result is smaller than the currently shown page, new search and repaginate - - let newPage = Math.floor(result.total / ownState.rowsPerPage); - - Promise.resolve(callback(newPage, ownState.rowsPerPage, ownState.orderBy, ownState.order, filter)).then(result1 => { - dispatch(new SetResultAction(result1)); - }); - - - } else { - dispatch(new SetResultAction(result)); - } - - - }).catch(error => dispatch(new AddErrorInfoAction(error))); - }; - - const createPreActions = (dispatch: Dispatch, skipRefresh: boolean = false) => { - return { - onPreFilterChanged: (preFilter: { [key: string]: string }) => { - dispatch(new SetPreFilterChangedAction(preFilter)); - (!skipRefresh) && dispatch(reloadAction); - } - }; - } - - const createActions = (dispatch: Dispatch, skipRefresh: boolean = false) => { - return { - onRefresh: () => { - dispatch(reloadAction); - }, - onHandleRequestSort: (orderBy: string) => { - dispatch((dispatch: Dispatch) => { - dispatch(new RequestSortAction(orderBy)); - (!skipRefresh) && dispatch(reloadAction); - }); - }, - onHandleExplicitRequestSort: (property: string, sortOrder: "asc" | "desc") => { - dispatch((dispatch: Dispatch) => { - dispatch(new RequestExplicitSortAction(property, sortOrder)); - (!skipRefresh) && dispatch(reloadAction); - }); - }, - onToggleFilter: (refresh?: boolean) => { - dispatch((dispatch: Dispatch, getAppState: () => IApplicationStoreState) => { - const { showFilter } = selectState(getAppState()); - dispatch(new SetShowFilterAction(!showFilter)); - if (!skipRefresh && (refresh === undefined || refresh)) - dispatch(reloadAction); - }); - }, - onFilterChanged: (property: string, filterTerm: string) => { - dispatch((dispatch: Dispatch, getAppState: () => IApplicationStoreState) => { - let { filter } = selectState(getAppState()); - filter = { ...filter, [property]: filterTerm }; - dispatch(new SetFilterChangedAction(filter)); - (!skipRefresh) && dispatch(reloadAction); - }); - }, - onHandleChangePage: (page: number) => { - dispatch((dispatch: Dispatch) => { - dispatch(new SetPageAction(page)); - (!skipRefresh) && dispatch(reloadAction); - }); - }, - onHandleChangeRowsPerPage: (rowsPerPage: number | null) => { - dispatch((dispatch: Dispatch) => { - dispatch(new SetRowsPerPageAction(rowsPerPage || 10)); - (!skipRefresh) && dispatch(reloadAction); - }); - }, - onHideColumns: (columnName: string[]) =>{ - dispatch((dispatch: Dispatch) => { - dispatch(new HideColumnsAction(columnName)); - }) - }, - onShowColumns: (columnName: string[]) =>{ - dispatch((dispatch: Dispatch) => { - dispatch(new ShowColumnsAction(columnName)); - }) - }, - onClearFilters: () => { - dispatch((dispatch: Dispatch) => { - let filter = { }; - dispatch(new SetFilterChangedAction(filter)); - }); - }, - // selected: - }; - }; - - const createProperties = (state: IApplicationStoreState) => { - return { - ...selectState(state) - } - } - - return { - reloadAction: reloadAction, - createActions: createActions, - createProperties: createProperties, - createPreActions: createPreActions, - actionHandler: externalTableStateActionHandler, - } -} - |