// External imports import * as React from "react" import { advancedObjectHelper } from "fawkes-server/build/support" // Internal imports import * as ce from "../../../helpers/componentEnhancer" import * as AdvancedRecordListActions from "../../../actions/advancedRecordList" import AdvancedTableCore from "./advancedTableCore/advancedTableCore" import AdvancedTablePagination from "./advancedTablePagination/advancedTablePagination" import AdvancedTableFilters from "./advancedTableFilters/advancedTableFilters" import AdvancedTableButtonBar from "./advancedTableButtonBar" import Title from "../title" import * as stl from "../../../store/types" import { AdvancedTablePropertyToDisplay } from "../../../helpers/advancedTable" export interface ParentProps { advancedObject: advancedObjectHelper.AdvancedObject tableKeyPrefix?: string queryOptions?: advancedObjectHelper.AdvancedObjectGetRecordListOptions } interface StateProps { advancedRecordList: stl.AdvancedRecordList advancedTable: stl.AdvancedTable } interface DispatchProps { load: ( queryOptions: advancedObjectHelper.AdvancedObjectGetRecordListOptions ) => void } interface LocalState {} class AdvancedTable extends React.Component< ParentProps & StateProps & DispatchProps & ce.EnhancedPropsPrivate, LocalState > { componentDidMount() { this.props.load(this.props.queryOptions || {}) } propertiesToDisplay(): Array { return this.props.advancedObject .getPropertiesPublic() .filter(property => property.showInDefaultList) .map((property, propertyIndex) => ({ propertyName: property.name, columnTitle: this.props.advancedObject.getPropertyTitle( property.name, this.props.language ), link: /*(recordId, cellValue) => propertyIndex === 0 ? "/" + this.props.advancedObject.objectName + "/record/" + recordId : */ null // This used to automatically link the first column to the record - replaced by individual Button })) } render() { return this.props.advancedRecordList ? (
<AdvancedTableButtonBar table={this.props.advancedTable} newItemLinkPath={ "/" + this.props.advancedObject.objectName + "/record/" } /> {this.props.advancedTable.ui.filtersExpanded ? ( ) => this.props.load({ filterBy: newFilters, pageIndex: 0 })} module={this.props.module} /> ) : null} this.props.load({ pageIndex })} />
) : null } } const stateMappings: ce.StateMappings = (s, props) => ({ advancedRecordList: s.advancedRecordList.instances.find( st => st.key === props.advancedObject.objectName + "-" + (props.tableKeyPrefix || "default") ), advancedTable: s.advancedTable.tables.find( st => st.key === props.advancedObject.objectName + "-" + (props.tableKeyPrefix || "default") ) }) const dispatchMappings: ce.DispatchMappings = (d, props) => ({ load: ( queryOptions: advancedObjectHelper.AdvancedObjectGetRecordListOptions ) => { d( AdvancedRecordListActions.load( props.module.api, props.advancedObject, queryOptions, props.tableKeyPrefix || "default" ) ) } }) export default ((): React.ComponentType => ce.enhance(AdvancedTable, { stateMappings, dispatchMappings }))()