{"version":3,"file":"static/js/26.024744152c994db2b5df.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/allowable-freight/utils/AllowableFreightStatusEnum.ts?9853","webpack://Msdyn365.Commerce.Online/./src/modules/allowable-freight/allowable-freight.tsx?476b","webpack://Msdyn365.Commerce.Online/./src/modules/table-browser/proxy/DataServiceEntities.g.ts?05d7","webpack://Msdyn365.Commerce.Online/./src/modules/table-browser/proxy/DataActionExtension.g.ts?0de8","webpack://Msdyn365.Commerce.Online/./src/modules/table-browser/components/QuerySearchComponent.tsx?0dae","webpack://Msdyn365.Commerce.Online/./src/modules/table-browser/table-browser.tsx?5a25","webpack://Msdyn365.Commerce.Online/./src/modules/allowable-freight/allowable-freight.view.tsx?1c71","webpack://Msdyn365.Commerce.Online/./src/modules/table-browser/table-browser.view.tsx?7dae","webpack://Msdyn365.Commerce.Online/./src/modules/allowable-freight/utils/AllowableFreightProgressBarEnum.ts?27b9"],"sourcesContent":["export enum AllowableFreightStatusType {\r\n Oil = 'Oil',\r\n Oversized = 'Oversized',\r\n LTL = 'LTL'\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAllowableFreightData } from './allowable-freight.data';\r\nimport { IAllowableFreightProps } from './allowable-freight.props.autogenerated';\r\nimport { AllowableFreightStatusType } from './utils/AllowableFreightStatusEnum';\r\nimport { AllowableFreightProgressBarClassEnum } from './utils/AllowableFreightProgressBarEnum';\r\nimport { reaction } from 'mobx';\r\nimport _ from 'lodash';\r\nimport { IAllowableFreightCalculation, IAllowableFreightStatusLine, IProductCodeEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nimport getAllowableFreightCalculationAction, {\r\n GetAllowableFreightCalculationInput\r\n} from '../../actions/get-allowable-freight-calculation.action';\r\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductCodesAsync } from '../../actions/DataActionExtension.g';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nexport interface IAllowableFreightViewProps extends IAllowableFreightProps {\r\n state: AllowableFreightState;\r\n}\r\nexport interface AllowableFreightState {\r\n containsOil: boolean;\r\n oversizedItem: boolean;\r\n mustShipLTL: boolean;\r\n limitReached: boolean;\r\n cartFreight: number;\r\n sliderColourClass: string;\r\n errorMessage: string | undefined;\r\n maxLimit: number;\r\n isUnitCount: boolean;\r\n cartHasSpringPromoCoupon: boolean;\r\n productCodes: IProductCodeEntity[];\r\n}\r\n\r\n/**\r\n *\r\n * AllowableFreight component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AllowableFreight extends React.PureComponent, AllowableFreightState> {\r\n constructor(props: IAllowableFreightProps) {\r\n super(props);\r\n this.state = {\r\n containsOil: false,\r\n oversizedItem: false,\r\n mustShipLTL: false,\r\n limitReached: false,\r\n cartFreight: 0,\r\n sliderColourClass: AllowableFreightProgressBarClassEnum.Red,\r\n errorMessage: undefined,\r\n maxLimit: 0,\r\n isUnitCount: false,\r\n cartHasSpringPromoCoupon: false,\r\n productCodes: []\r\n };\r\n }\r\n public componentDidMount() {\r\n if (this.props.data.cart.result?.cart) {\r\n const {\r\n data: {\r\n cart: {\r\n result: {\r\n cart: { Id, CartLines }\r\n }\r\n }\r\n }\r\n } = this.props;\r\n\r\n this.setState({ cartHasSpringPromoCoupon: this.cartHasSpringPromoCoupons() });\r\n void this.updateAllowableFreightv2(Id, CartLines || []);\r\n void this.getProductCodesForCartLines();\r\n }\r\n\r\n reaction(\r\n () => this.props.data.cart.result?.cart,\r\n () => {\r\n if (this.props.data.cart.result?.cart) {\r\n const {\r\n data: {\r\n cart: {\r\n result: {\r\n cart: { Id, CartLines }\r\n }\r\n }\r\n }\r\n } = this.props;\r\n this.setState({ cartHasSpringPromoCoupon: this.cartHasSpringPromoCoupons() });\r\n // this.updateAllowableFreight(this.props.data.cart.result!.cart);\r\n void this.updateAllowableFreightv2(Id, CartLines || []);\r\n void this.getProductCodesForCartLines();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public cartHasSpringPromoCoupons = () => {\r\n if (this.props.data.cart.result) {\r\n const {\r\n data: {\r\n cart: {\r\n result: {\r\n cart: { Coupons }\r\n }\r\n }\r\n },\r\n config: { springPromoCoupons }\r\n } = this.props;\r\n if (ArrayExtensions.hasElements(springPromoCoupons) && ArrayExtensions.hasElements(Coupons)) {\r\n const items = _.intersection(\r\n springPromoCoupons.map(c => c.toUpperCase()),\r\n Coupons.map(c => c.Code?.toUpperCase()).filter(c => c !== undefined)\r\n );\r\n return ArrayExtensions.hasElements(items);\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n public getProductCodesForCartLines = async () => {\r\n const {\r\n data: {\r\n cart: { result }\r\n },\r\n context: { actionContext }\r\n } = this.props;\r\n if (!result) {\r\n return;\r\n }\r\n const itemIds = _.uniq(result.cart.CartLines?.map(cl => cl.ItemId).filter(item => item !== undefined) || []);\r\n const productCodes = await getProductCodesAsync({ callerContext: actionContext }, itemIds as string[]);\r\n if (productCodes && productCodes.ProductCodes) {\r\n this.setState({ productCodes: productCodes.ProductCodes });\r\n }\r\n };\r\n\r\n public updateAllowableFreightv2 = async (cartId: string | undefined, cartLines: CartLine[]) => {\r\n if (!cartId) {\r\n return;\r\n }\r\n const actionInput = new GetAllowableFreightCalculationInput(cartId, cartLines);\r\n const freightCalc = await getAllowableFreightCalculationAction(actionInput, this.props.context.actionContext);\r\n // const freightCalc = await getAllowableFreightAsync({ callerContext: this.props.context.actionContext }, cartId);\r\n this.checkAllowableFreightLimit(freightCalc);\r\n Object.keys(AllowableFreightStatusType).forEach(k => {\r\n // eslint-disable-next-line security/detect-object-injection\r\n if (freightCalc?.AllowableFreightStatusLine && freightCalc.AllowableFreightStatusLine.length) {\r\n // @ts-ignore\r\n this.applyGlobalState(freightCalc.AllowableFreightStatusLine, AllowableFreightStatusType[k]);\r\n }\r\n });\r\n };\r\n\r\n // public updateAllowableFreight = (cart: Cart) => {\r\n // //Check the allowable freight because it has the lowest priority, followed by the item filter.\r\n // this.checkAllowableFreightLimit(cart);\r\n // Object.keys(AllowableFreightStatusType).forEach(k => {\r\n // // eslint-disable-next-line security/detect-object-injection\r\n // this.applyGlobalState(cart, AllowableFreightStatusType[k]);\r\n // });\r\n\r\n // // this.applyFreightSliderColor();\r\n // };\r\n\r\n // private applyFreightSliderColor = () => {\r\n // if (this.state.mustShipLTL) {\r\n // this.setState({ sliderColourClass: AllowableFreightProgressBarClassEnum.Red });\r\n // return;\r\n // } else if (this.state.containsOil || this.state.oversizedItem) {\r\n // this.setState({ sliderColourClass: AllowableFreightProgressBarClassEnum.Yellow });\r\n // return;\r\n // } else if (this.state.limitReached) {\r\n // this.setState({ sliderColourClass: AllowableFreightProgressBarClassEnum.Green });\r\n // return;\r\n // }\r\n // };\r\n\r\n private checkAllowableFreightLimit = (freightCalculation: IAllowableFreightCalculation) => {\r\n if (!freightCalculation) {\r\n return;\r\n }\r\n const maxAllowableFreight = freightCalculation.ThresholdAmountTotal;\r\n\r\n const isUnitCount = freightCalculation.IsUnitCount;\r\n\r\n const cartFreight = freightCalculation.ThresholdAmountCurrent;\r\n\r\n this.setState({\r\n cartFreight: parseInt((cartFreight as unknown) as string, 10),\r\n maxLimit: parseInt((maxAllowableFreight as unknown) as string, 10)\r\n });\r\n if (cartFreight >= maxAllowableFreight) {\r\n this.setState({\r\n limitReached: true,\r\n sliderColourClass: AllowableFreightProgressBarClassEnum.Red,\r\n errorMessage: this.props.resources.freightAllowanceLimitMessage,\r\n isUnitCount: isUnitCount || false\r\n });\r\n } else {\r\n this.setState({\r\n limitReached: false,\r\n sliderColourClass: AllowableFreightProgressBarClassEnum.Red,\r\n errorMessage: undefined,\r\n isUnitCount: isUnitCount || false\r\n });\r\n }\r\n };\r\n\r\n private applyGlobalState = (statusLine: IAllowableFreightStatusLine[], key: AllowableFreightStatusType) => {\r\n const hasStatus = statusLine?.filter(f => f.StatusType === key) || false;\r\n if (hasStatus.length > 0) {\r\n switch (key) {\r\n //Highest priority\r\n case AllowableFreightStatusType.LTL:\r\n this.setState({\r\n mustShipLTL: true,\r\n errorMessage: this.props.resources.mustShipLTLMessage\r\n });\r\n break;\r\n case AllowableFreightStatusType.Oil:\r\n this.setState({\r\n containsOil: true,\r\n errorMessage: this.props.resources.containsOilMessage\r\n });\r\n break;\r\n case AllowableFreightStatusType.Oversized:\r\n this.setState({\r\n oversizedItem: true,\r\n errorMessage: this.props.resources.overSizedItemMessage\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: IAllowableFreightViewProps = {\r\n ...this.props,\r\n state: this.state\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default AllowableFreight;\r\n","\r\n// tslint:disable\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n\r\n/**\r\n * WhereClause entity interface.\r\n */\r\nexport interface IWhereClause {\r\n Column?: string;\r\n Operator?: string;\r\n Value?: string;\r\n IsString?: boolean;\r\n Conjunction?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\n\r\n/**\r\n * TableQueryResponseEntity entity interface.\r\n */\r\nexport interface ITableQueryResponseEntity {\r\n JsonResults?: string;\r\n Count?: number;\r\n IsError?: boolean;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\n\r\n/**\r\n * WhereClause entity class.\r\n */\r\nexport class WhereClauseExtensionClass implements IWhereClause {\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Column: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Operator: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Value: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsString: boolean;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Conjunction: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Column = odataObject.Column;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Operator = odataObject.Operator;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Value = odataObject.Value;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsString = odataObject.IsString;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Conjunction = odataObject.Conjunction;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i])\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\n/**\r\n * TableQueryResponseEntity entity class.\r\n */\r\nexport class TableQueryResponseEntityExtensionClass implements ITableQueryResponseEntity {\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public JsonResults: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Count: number;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsError: boolean;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.JsonResults = odataObject.JsonResults;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Count = (odataObject.Count) ? parseInt(odataObject.Count, 10) : 0;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsError = odataObject.IsError;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i])\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n\r\n }\r\n}\r\n","\r\n/*!\r\n* Copyright (c) Microsoft Corporation.\r\n* All rights reserved. See LICENSE in the project root for license information.\r\n* THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n* TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n*/\r\n// tslint:disable\r\nimport { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\n// @ts-ignore\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n\r\nfunction getTableQueryResponseQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n}\r\n\r\n\r\nexport function getTableQueryResponseInput (\r\n schemaName:\r\n string,\r\n tableName:\r\n string,\r\n columns:\r\n string[],\r\n whereClauses:\r\n DataServiceEntities.IWhereClause[],\r\n orderBy:\r\n string,\r\n isDescending:\r\n boolean,\r\n limit:\r\n number,\r\n offset:\r\n number,\r\n password:\r\n string\r\n): IDataServiceRequest {\r\n const query = getTableQueryResponseQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'GetTableQueryResponse',\r\n true,\r\n DataServiceEntities.TableQueryResponseEntityExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.ITableQueryResponseEntity' },\r\n {\r\n schemaName: schemaName,\r\n tableName: tableName,\r\n columns: columns,\r\n whereClauses: whereClauses,\r\n orderBy: orderBy,\r\n isDescending: isDescending,\r\n limit: limit,\r\n offset: offset,\r\n password: password\r\n }\r\n );\r\n}\r\n\r\nexport function getTableQueryResponseAsync (\r\n context: IContext, schemaName:\r\n string,\r\n tableName:\r\n string,\r\n columns:\r\n string[],\r\n whereClauses:\r\n DataServiceEntities.IWhereClause[],\r\n orderBy:\r\n string,\r\n isDescending:\r\n boolean,\r\n limit:\r\n number,\r\n offset:\r\n number,\r\n password:\r\n string\r\n): AsyncResult {\r\n const request = getTableQueryResponseInput(schemaName, tableName, columns, whereClauses, orderBy, isDescending, limit, offset, password);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n","import React from 'react';\r\nimport { ISearchState } from '../table-browser';\r\n\r\ninterface IQuerySearchComponentProps {\r\n searchState: ISearchState;\r\n updateSearchState: (state: ISearchState) => void;\r\n search: () => void;\r\n}\r\n\r\nexport const QuerySearchComponent: React.FC = ({ searchState, updateSearchState, search }) => {\r\n const [colInputVal, setColInputVal] = React.useState('');\r\n const updateSchema = (e: React.ChangeEvent) => {\r\n updateSearchState({ ...searchState, schema: e.target.value });\r\n };\r\n\r\n const updateTable = (e: React.ChangeEvent) => {\r\n updateSearchState({ ...searchState, table: e.target.value });\r\n };\r\n\r\n const updateOrderBy = (e: React.ChangeEvent) => {\r\n updateSearchState({ ...searchState, orderBy: e.target.value });\r\n };\r\n\r\n const updateIsAscending = () => updateSearchState({ ...searchState, isAscending: !searchState.isAscending });\r\n\r\n const updateTop = (e: React.ChangeEvent) =>\r\n updateSearchState({ ...searchState, top: parseInt(e.target.value, 10), skip: 0 });\r\n\r\n const updateColInputVal = (e: React.ChangeEvent) => setColInputVal(e.target.value);\r\n\r\n const updatePassword = (e: React.ChangeEvent) => updateSearchState({ ...searchState, password: e.target.value });\r\n const handleDeleteColumn = (col: string) => {\r\n const columns = searchState.columns;\r\n const idx = columns.findIndex(c => c === col);\r\n columns.splice(idx, 1);\r\n updateSearchState({ ...searchState, columns });\r\n };\r\n\r\n const addCol = () => {\r\n if (!searchState.columns.includes(colInputVal) && colInputVal !== '') {\r\n const cols = [...searchState.columns, colInputVal];\r\n updateSearchState({ ...searchState, columns: cols });\r\n setColInputVal('');\r\n }\r\n };\r\n\r\n const shouldSubmitColInput = (e: React.KeyboardEvent) => (e.key.toLowerCase() === 'enter' ? addCol() : null);\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {searchState.columns.map(col => (\r\n
\r\n {col} handleDeleteColumn(col)} />\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ITableBrowserData } from './table-browser.data';\r\nimport { ITableBrowserProps } from './table-browser.props.autogenerated';\r\nimport { getTableQueryResponseAsync } from './proxy/DataActionExtension.g';\r\nimport DataTable, { TableColumn, TableRow } from 'react-data-table-component';\r\nimport { QuerySearchComponent } from './components/QuerySearchComponent';\r\nimport { IWhereClause } from './proxy/DataServiceEntities.g';\r\n\r\nexport interface ITableBrowserViewProps extends ITableBrowserProps {\r\n table: React.ReactNode | null;\r\n searchComponent: React.ReactNode;\r\n}\r\n\r\ninterface ITableBrowserState {\r\n count: number;\r\n isError: boolean;\r\n tableData: any;\r\n loading: boolean;\r\n searchState: ISearchState;\r\n}\r\n\r\nexport interface ISearchState {\r\n schema: string;\r\n table: string;\r\n top: number;\r\n skip: number;\r\n where: IWhereClause[];\r\n orderBy: string;\r\n isAscending: boolean;\r\n columns: string[];\r\n password: string;\r\n}\r\n\r\n/**\r\n *\r\n * TableBrowser component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass TableBrowser extends React.PureComponent, ITableBrowserState> {\r\n constructor(props: ITableBrowserProps) {\r\n super(props);\r\n\r\n const defaultSearchState: ISearchState = {\r\n table: '',\r\n schema: '',\r\n columns: [],\r\n isAscending: false,\r\n orderBy: '',\r\n skip: 0,\r\n top: 25,\r\n where: [],\r\n password: ''\r\n };\r\n\r\n this.state = {\r\n count: 0,\r\n isError: false,\r\n tableData: null,\r\n loading: false,\r\n searchState: defaultSearchState\r\n };\r\n\r\n this.updateSearchState = this.updateSearchState.bind(this);\r\n this.getData = this.getData.bind(this);\r\n this.doSearch = this.doSearch.bind(this);\r\n this.updateRowsPerPage = this.updateRowsPerPage.bind(this);\r\n this.handlePageChange = this.handlePageChange.bind(this);\r\n }\r\n\r\n private get tableColumns(): TableColumn | null {\r\n const { tableData } = this.state;\r\n\r\n if (tableData) {\r\n // @ts-ignore\r\n return Object.keys(tableData[0]).map(heading => {\r\n return {\r\n name: heading,\r\n selector: (row: any) => row[heading],\r\n reorder: true\r\n };\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private get tableRows(): TableRow | null {\r\n const { tableData } = this.state;\r\n\r\n if (tableData) {\r\n return tableData.map((result: any, i: number) => {\r\n const row = { id: i };\r\n Object.keys(result).forEach(key => {\r\n row[key] = result[key];\r\n });\r\n return row;\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n private renderSearchComponent(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n private doSearch() {\r\n void this.getData(this.state.searchState);\r\n }\r\n\r\n private updateSearchState(searchState: ISearchState) {\r\n this.setState({ searchState: searchState });\r\n }\r\n\r\n private updateRowsPerPage(rowsPerPage: number) {\r\n this.setState({ searchState: { ...this.state.searchState, top: rowsPerPage, skip: 0 } }, () =>\r\n this.getData(this.state.searchState)\r\n );\r\n }\r\n\r\n private handlePageChange(page: number) {\r\n this.setState({ searchState: { ...this.state.searchState, skip: this.state.searchState.top * (page - 1) } }, () =>\r\n this.getData(this.state.searchState)\r\n );\r\n }\r\n\r\n private renderTable(): React.ReactNode {\r\n const cols = this.tableColumns;\r\n const rows = this.tableRows;\r\n if (cols && rows) {\r\n // @ts-ignore\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private async getData(searchState: ISearchState) {\r\n void getTableQueryResponseAsync(\r\n { callerContext: this.props.context.actionContext },\r\n searchState.schema,\r\n searchState.table,\r\n searchState.columns,\r\n [],\r\n searchState.orderBy,\r\n searchState.isAscending,\r\n searchState.top,\r\n searchState.skip,\r\n searchState.password\r\n ).then(data => {\r\n this.setState({\r\n tableData: JSON.parse(data?.JsonResults || '')?.Results,\r\n isError: data.IsError || false,\r\n count: data.Count || 0\r\n });\r\n });\r\n }\r\n\r\n // public componentDidMount() {\r\n // const searchState: ISearchState = {\r\n // top: 25,\r\n // skip: 0,\r\n // table: 'inventTable',\r\n // schema: 'ext',\r\n // where: [],\r\n // orderBy: 'ITEMID',\r\n // isAscending: false,\r\n // columns: ['*'],\r\n // password: 'password'\r\n // };\r\n // void this.getData(searchState);\r\n // }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ITableBrowserViewProps = {\r\n ...this.props,\r\n table: this.renderTable(),\r\n searchComponent: this.renderSearchComponent()\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default TableBrowser;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAllowableFreightViewProps } from './allowable-freight';\r\nimport { Progress } from 'reactstrap';\r\nimport { AllowableFreightProgressBarClassEnum } from './utils/AllowableFreightProgressBarEnum';\r\nimport { IPromotionsData } from './allowable-freight.props.autogenerated';\r\n\r\nexport default (props: IAllowableFreightViewProps) => {\r\n const {\r\n data: { cart },\r\n config: { requireCouponForPromoBar, promotions },\r\n state: { maxLimit, limitReached, mustShipLTL, oversizedItem, containsOil, errorMessage, cartFreight }\r\n } = props;\r\n const minimumRange = 0;\r\n\r\n const getTickerColourClass = () => {\r\n //works on a priority system\r\n if (mustShipLTL) {\r\n return AllowableFreightProgressBarClassEnum.Red;\r\n }\r\n if (oversizedItem || containsOil) {\r\n return AllowableFreightProgressBarClassEnum.Yellow;\r\n }\r\n if (limitReached) {\r\n return AllowableFreightProgressBarClassEnum.Green;\r\n }\r\n return AllowableFreightProgressBarClassEnum.Red;\r\n };\r\n\r\n const shouldRenderPromoBars = () => {\r\n if (requireCouponForPromoBar && props.state.cartHasSpringPromoCoupon) {\r\n return true;\r\n } else if (!requireCouponForPromoBar) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n const getValueForLabel = (value: string | number) => {\r\n const formattedValue = !props.state.isUnitCount ? props.context.cultureFormatter.formatCurrency(value) : value;\r\n return formattedValue.toString();\r\n };\r\n\r\n const getProductCodeByItemId = (itemId: string) => props.state.productCodes.find(pc => pc.ItemId === itemId)?.ProductCode || null;\r\n\r\n const getMaxPromoAmount = (promotion: IPromotionsData) => Math.max(...promotion.promoBreakpoints.map(pr => pr.spendAmount));\r\n const getAmountForMfr = (promotion: IPromotionsData) => {\r\n const mfr = promotion.mfr;\r\n if (mfr === '*') {\r\n const total = (cart.result?.cart.CartLines || []).map(cl => cl.TotalAmount).reduce((tot, acc) => tot! + acc!) || 0;\r\n console.log('Total', total);\r\n return total;\r\n } else {\r\n let cartLines = cart.result?.cart.CartLines?.filter(cl => cl.ItemId?.startsWith(mfr)) || [];\r\n const { inclusionCodes, exclusionCodes } = promotion;\r\n if (inclusionCodes && inclusionCodes.length) {\r\n cartLines = cartLines.filter(cl => {\r\n const productCode = getProductCodeByItemId(cl.ItemId || '');\r\n if (productCode) {\r\n return inclusionCodes.includes(productCode);\r\n }\r\n return true;\r\n });\r\n } else if (exclusionCodes) {\r\n cartLines = cartLines.filter(cl => !exclusionCodes.includes(getProductCodeByItemId(cl.ItemId || '') || ''));\r\n }\r\n const amounts = cartLines.map(cl => cl.TotalAmount);\r\n if (Array.isArray(amounts) && !!amounts.length) {\r\n const total = amounts.reduce((tot, acc) => tot! + acc!) || 0;\r\n return total;\r\n }\r\n }\r\n return 0;\r\n };\r\n\r\n const getNextTier = (promo: IPromotionsData) => {\r\n let tierIdx = 0;\r\n let tier = promo.promoBreakpoints[tierIdx];\r\n const totalForMfr = getAmountForMfr(promo);\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n if (tier.spendAmount > totalForMfr) {\r\n return tier;\r\n }\r\n tierIdx++;\r\n const _tier = promo.promoBreakpoints[tierIdx];\r\n if (_tier) {\r\n tier = _tier;\r\n } else {\r\n break;\r\n }\r\n }\r\n return tier;\r\n };\r\n\r\n if (!props.state.cartFreight && !props.state.maxLimit) {\r\n return null;\r\n }\r\n React.useEffect(() => {\r\n if (cart.result?.cart.CartLines?.length === 0) {\r\n props.state.cartFreight = 0;\r\n }\r\n }, [cart.result?.cart.CartLines?.length]);\r\n\r\n return (\r\n (shouldRenderPromoBars() || (!props.state.cartHasSpringPromoCoupon && cart.result?.cart.CartLines?.length! > 0)) && (\r\n
\r\n {!props.state.cartHasSpringPromoCoupon && cart.result?.cart.CartLines?.length! > 0 ? (\r\n
\r\n

{`${props.resources.sliderLabel}: ${getValueForLabel(\r\n cartFreight\r\n )}`}

\r\n
\r\n {getValueForLabel(minimumRange)}\r\n \r\n {getValueForLabel(maxLimit)}\r\n
\r\n {errorMessage &&
{errorMessage}
}\r\n
\r\n ) : null}\r\n\r\n {shouldRenderPromoBars() &&\r\n promotions?.map((promo, i) => {\r\n const maxPromoAmount = getMaxPromoAmount(promo);\r\n const total = getAmountForMfr(promo);\r\n if (maxPromoAmount === 0 || total === 0) {\r\n return null;\r\n }\r\n const tier = getNextTier(promo);\r\n\r\n let headerText = `Spend ${props.context.cultureFormatter.formatCurrency(tier.spendAmount - total)} to ${\r\n tier.savingText\r\n }`;\r\n if (total >= maxPromoAmount) {\r\n headerText = `${tier.savingText}!`;\r\n }\r\n const valueMax = promo.promoBreakpoints.map(bp => bp.spendAmount).reduce((tot, acc) => tot + acc);\r\n\r\n return (\r\n
\r\n

\r\n \r\n Current {promo.mfr === '*' ? '' : promo.label || promo.mfr} spend:{' '}\r\n {props.context.cultureFormatter.formatCurrency(total)}\r\n \r\n {headerText} \r\n

\r\n
\r\n {promo.label}\r\n \r\n {promo.promoBreakpoints.map((tier, idx) => {\r\n let className = 'gardner-red-promo';\r\n if (total >= tier.spendAmount) {\r\n className = `gardner-green-promo`;\r\n }\r\n if (idx > 0) {\r\n const prevTier = promo.promoBreakpoints[idx - 1];\r\n if (prevTier.spendAmount >= total) {\r\n return null;\r\n }\r\n }\r\n return (\r\n \r\n \r\n {tier.spendAmount <= total\r\n ? tier.savingText\r\n : props.context.cultureFormatter.formatCurrency(total)}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n {props.context.cultureFormatter.formatCurrency(getMaxPromoAmount(promo)).replace('.00', '')}\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ITableBrowserViewProps } from './table-browser';\r\n\r\nexport default (props: ITableBrowserViewProps) => {\r\n return (\r\n <>\r\n {props.searchComponent}\r\n {props.table}\r\n \r\n );\r\n};\r\n","export enum AllowableFreightProgressBarClassEnum {\r\n Red = 'gardner-red',\r\n Green = 'gardner-green',\r\n Yellow = 'gardner-yellow'\r\n}\r\n"],"names":["AllowableFreightStatusType","AllowableFreight","React","constructor","props","super","cartHasSpringPromoCoupons","this","data","cart","result","Coupons","config","springPromoCoupons","ArrayExtensions","hasElements","items","_intersection","map","c","toUpperCase","_c$Code","Code","filter","undefined","getProductCodesForCartLines","async","_result$cart$CartLine","context","actionContext","itemIds","_uniq","CartLines","cl","ItemId","item","productCodes","getProductCodesAsync","callerContext","ProductCodes","setState","updateAllowableFreightv2","cartId","cartLines","actionInput","GetAllowableFreightCalculationInput","freightCalc","getAllowableFreightCalculationAction","checkAllowableFreightLimit","Object","keys","forEach","k","AllowableFreightStatusLine","length","applyGlobalState","freightCalculation","maxAllowableFreight","ThresholdAmountTotal","isUnitCount","IsUnitCount","cartFreight","ThresholdAmountCurrent","parseInt","maxLimit","limitReached","sliderColourClass","AllowableFreightProgressBarClassEnum","Red","errorMessage","resources","freightAllowanceLimitMessage","statusLine","key","f","StatusType","LTL","mustShipLTL","mustShipLTLMessage","Oil","containsOil","containsOilMessage","Oversized","oversizedItem","overSizedItemMessage","state","cartHasSpringPromoCoupon","componentDidMount","_this$props$data$cart","Id","reaction","_this$props$data$cart2","_this$props$data$cart3","render","viewProps","_objectSpread","renderView","TableQueryResponseEntityExtensionClass","odataObject","JsonResults","Count","IsError","ExtensionProperties","i","className","substr","lastIndexOf","concat","EntityClasses","getTableQueryResponseInput","schemaName","tableName","columns","whereClauses","orderBy","isDescending","limit","offset","password","DataServiceQuery","createDataServiceRequestForOperation","DataServiceEntities","bypassCache","returnEntity","QuerySearchComponent","_ref","searchState","updateSearchState","search","colInputVal","setColInputVal","addCol","includes","cols","htmlFor","type","id","name","value","onChange","e","target","schema","table","onKeyUp","toLowerCase","onClick","col","idx","findIndex","splice","handleDeleteColumn","checked","isAscending","updateIsAscending","top","skip","TableBrowser","count","isError","tableData","loading","where","bind","getData","doSearch","updateRowsPerPage","handlePageChange","tableColumns","heading","selector","row","reorder","tableRows","renderSearchComponent","rowsPerPage","page","renderTable","rows","DataTable","pagination","paginationServer","paginationTotalRows","onChangeRowsPerPage","onChangePage","paginationPerPage","request","callActionOrExecute","getTableQueryResponseAsync","then","_JSON$parse","JSON","parse","Results","searchComponent","_cart$result4","_cart$result5","_cart$result6","requireCouponForPromoBar","promotions","shouldRenderPromoBars","getValueForLabel","cultureFormatter","formatCurrency","toString","getProductCodeByItemId","itemId","_props$state$productC","find","pc","ProductCode","getMaxPromoAmount","promotion","Math","max","promoBreakpoints","pr","spendAmount","getAmountForMfr","mfr","_cart$result","total","TotalAmount","reduce","tot","acc","console","log","_cart$result2","_cl$ItemId","startsWith","inclusionCodes","exclusionCodes","productCode","amounts","Array","isArray","_cart$result3","sliderLabel","Progress","Yellow","Green","min","promo","maxPromoAmount","tier","tierIdx","totalForMfr","_tier","getNextTier","headerText","savingText","valueMax","bp","style","marginBottom","label","multi","display","flexGrow","margin","height","borderRadius","backgroundColor","bar","color","replace"],"sourceRoot":""}