{"version":3,"sources":["Modules/Dashboard/constants.js","Modules/core/createActionType.js","Modules/Dashboard/actionTypes.js","Modules/Dashboard/reducer.js","Modules/Auth/actionTypes.js","Modules/Auth/constants.js","Modules/Auth/reducer.js","Modules/core/Components/Loader.js","Modules/core/Components/ChartCheckboxItem/ChartCheckboxItem.js","Modules/core/Components/ChartWrapper/ChartWrapper.js","Modules/Dashboard/Components/Barchart.js","Modules/Dashboard/Components/Linechart.js","Modules/Dashboard/api.js","Modules/Dashboard/selectors.js","Modules/core/Components/SwitchSelector/SwitchSelector.js","Modules/Auth/selectors.js","Modules/Dashboard/Components/Dashboard.js","Modules/Dashboard/actions.js","Modules/Auth/api.js","App.js","Modules/Auth/actions.js","registerServiceWorker.js","Modules/core/constants.js","Modules/core/configAxios.js","index.js","configureStore.js"],"names":["NAME","ALL_DASHBOARD_MEASUREMENTS","value","label","createActionType","actionType","REQUEST","concat","SUCCESS","ERROR","GET_SOURCE_STATS_BE_DATE_RANGE","GET_YEARLY_SOURCE_STATS","SOURCE_CHANGED","MEASUREMENT_CHANGED","TRIAL_CREATED","initialState","dailySourceStats","dailySourceStatsLoading","yearlySourceStats","yearlySourceStatsLoading","selectedSource","dashboardMeasurement","trialCreated","persistConfig","key","storage","whitelist","persistReducer","state","arguments","length","undefined","action","type","actionTypes","Object","objectSpread","payload","source","AUTHORIZE_BY_APPLICATION","token","authModel","authorizing","paramsToken","Loader","react_default","a","createElement","style","width","height","display","justifyContent","alignItems","react_spinners","sizeUnit","size","this","props","color","loading","Component","ChartCheckboxItem","onClick","_this","item","_this$props","isSelected","className","textDisplayKey","React","PureComponent","ChartWrapper","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","_","find","items","i","callback","onSelectItems","onClickCheckbox","setState","prevState","filter","it","toConsumableArray","renderCheckboxItem","Components_ChartCheckboxItem_ChartCheckboxItem","data","prevProps","isEqual","children","title","description","map","BarChart","content","indexBy","Components_Loader","keys","nivo_bar_esm","margin","top","right","bottom","left","padding","colors","maxValue","tooltip","_ref","id","total","fill","match","borderColor","from","modifiers","axisTop","axisRight","axisBottom","tickSize","tickPadding","tickRotation","legendPosition","legendOffset","axisLeft","legend","labelSkipWidth","labelSkipHeight","labelTextColor","legends","dataFrom","anchor","direction","justify","translateX","translateY","itemsSpacing","itemWidth","itemHeight","itemDirection","itemOpacity","symbolSize","effects","on","animate","motionStiffness","motionDamping","Components_ChartWrapper_ChartWrapper","LineChart","legendLeftText","nivo_line_esm","stacked","xScale","yScale","min","max","curve","enablePointLabel","enableSlices","orient","pointSize","pointColor","theme","pointBorderWidth","pointBorderColor","pointLabel","pointLabelYOffset","enableArea","areaBlendMode","areaOpacity","useMesh","symbolShape","symbolBorderColor","itemBackground","point","background","border","serieId","x","y","endpoints","start","end","format","getSourceStatsByDateRange","axios","get","getSoldBySource","measurement","getDashboardMeasurement","selected","processed","opened","received","Number","Math","round","processedCharge","toFixed","totalCharge","grouped","forEach","index","findIndex","el","push","getSoldBySubSource","subsource","getSoldBySourceYearly","result","year","getSoldBySourceMonthly","monthlySourceStats","moment","months","month","getDailySourceStatsLoading","getSelectedSource","getTrial","SwitchSelector","renderItem","onChange","options","isSecondSelected","getParamsToken","getAuthorizeToken","isAuthorizing","Dashboard","onDateRangeChange","dates","onSourceClick","node","sourceSelected","measurementChanged","selectedOption","measurementSelected","subscribeToTrial","range","startOf","add","_this$state$dates","getYearlySourceStats","nextProps","soldBySource","soldBySubSource","soldBySourceYearly","soldBySourceMonthly","lib","fluid","Components_SwitchSelector_SwitchSelector","DateRangePicker_default","onSelect","lg","Barchart","Linechart","paddingLeft","src","frameBorder","allow","allowFullScreen","connect","selectors","authSelectors","asyncToGenerator","regenerator_default","mark","_callee","dispatch","wrap","_context","prev","next","abrupt","api","then","response","catch","error","stop","_x","apply","_ref2","_callee2","_context2","params","_x2","_ref4","_callee4","_context4","_x4","_ref5","_callee5","_context5","_x5","_ref3","_callee3","_context3","alert","_x3","App","searchParams","hashes","slice","indexOf","split","hash","_hash$split","_hash$split2","slicedToArray","val","decodeURIComponent","authorize","react_router","exact","path","component","isLocalhost","Boolean","window","location","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","updateAuthorizationHeader","config","accessToken","baseExtension","c","headers","common","Authorization","omit","configAxios","store","defaults","baseURL","Pragma","interceptors","request","use","getState","Promise","reject","Error","baseUrl","document","getElementsByTagName","getAttribute","history","createBrowserHistory","basename","reducers","dashboard","auth","middleware","thunk","routerMiddleware","enhancers","rootReducer","combineReducers","router","connectRouter","createStore","compose","applyMiddleware","configureStore","initialReduxState","persistor","persistStore","rootElement","getElementById","ReactDOM","render","es","integration_react","esm","src_App","URL","process","origin","addEventListener","fetch","status","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.f86e4c6a.chunk.js","sourcesContent":["export const NAME = 'dashboard';\r\nexport const ALL_DASHBOARD_MEASUREMENTS = [\r\n {value: 'ordersCount', label: 'Orders Count'},\r\n {value: 'revenue', label: 'Revenue'}\r\n];","const createActionType = actionType => ({\r\n NAME: actionType,\r\n REQUEST: `${actionType}_REQUEST`,\r\n SUCCESS: `${actionType}_SUCCESS`,\r\n ERROR: `${actionType}_ERROR`\r\n});\r\n\r\nexport default createActionType;","import createActionType from '../core/createActionType';\r\nimport { NAME } from './constants';\r\n\r\nexport const GET_SOURCE_STATS_BE_DATE_RANGE = createActionType(`${NAME}/GET_SOURCE_STATS_BE_DATE_RANGE`);\r\nexport const GET_YEARLY_SOURCE_STATS = createActionType(`${NAME}/GET_YEARLY_SOURCE_STATS`);\r\nexport const SOURCE_CHANGED = createActionType(`${NAME}/SOURCE_CHANGED`);\r\nexport const MEASUREMENT_CHANGED = createActionType(`${NAME}/MEASUREMENT_CHANGED`);\r\nexport const TRIAL_CREATED = createActionType(`${NAME}/TRIAL_CREATED`);","import storage from 'redux-persist/lib/storage';\r\nimport { persistReducer } from 'redux-persist';\r\nimport { NAME, ALL_DASHBOARD_MEASUREMENTS } from './constants';\r\nimport * as actionTypes from './actionTypes';\r\n\r\nconst initialState = {\r\n dailySourceStats: [],\r\n dailySourceStatsLoading: false,\r\n yearlySourceStats: [],\r\n yearlySourceStatsLoading: false,\r\n selectedSource: null,\r\n dashboardMeasurement: ALL_DASHBOARD_MEASUREMENTS[0],\r\n trialCreated: false\r\n};\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.REQUEST:\r\n return {\r\n ...state,\r\n dailySourceStatsLoading: true\r\n };\r\n case actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.SUCCESS:\r\n return {\r\n ...state,\r\n dailySourceStats: action.payload,\r\n dailySourceStatsLoading: false,\r\n selectedSource: action.payload[0].source\r\n };\r\n case actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.ERROR:\r\n return {\r\n ...state,\r\n dailySourceStatsLoading: false,\r\n selectedSource: null\r\n };\r\n case actionTypes.GET_YEARLY_SOURCE_STATS.REQUEST:\r\n return {\r\n ...state,\r\n yearlySourceStatsLoading: true\r\n };\r\n case actionTypes.GET_YEARLY_SOURCE_STATS.SUCCESS:\r\n return {\r\n ...state,\r\n yearlySourceStats: action.payload,\r\n yearlySourceStatsLoading: false\r\n };\r\n case actionTypes.GET_YEARLY_SOURCE_STATS.ERROR:\r\n return {\r\n ...state,\r\n yearlySourceStatsLoading: false\r\n };\r\n case actionTypes.SOURCE_CHANGED.SUCCESS:\r\n return {\r\n ...state,\r\n selectedSource: action.payload\r\n };\r\n\r\n case actionTypes.MEASUREMENT_CHANGED.SUCCESS:\r\n return {\r\n ...state,\r\n dashboardMeasurement: action.payload\r\n };\r\n\r\n case actionTypes.TRIAL_CREATED.SUCCESS:{\r\n return {\r\n ...state,\r\n trialCreated: true\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst persistConfig = {\r\n key: NAME,\r\n storage,\r\n whitelist: []\r\n};\r\n\r\nexport default persistReducer(persistConfig, reducer);","import createActionType from '../core/createActionType';\r\nimport { NAME } from './constants';\r\n\r\nexport const AUTHORIZE_BY_APPLICATION = createActionType(`${NAME}/AUTHORIZE_BY_APPLICATION`);","export const NAME = 'auth';","import storage from 'redux-persist/lib/storage';\r\nimport { persistReducer } from 'redux-persist';\r\nimport { NAME } from './constants';\r\nimport * as actionTypes from './actionTypes';\r\n\r\nconst initialState = {\r\n token: null,\r\n authModel: null,\r\n authorizing: false,\r\n paramsToken: null\r\n};\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case actionTypes.AUTHORIZE_BY_APPLICATION.REQUEST:\r\n return {\r\n ...state,\r\n authorizing: true,\r\n paramsToken: action.payload\r\n };\r\n case actionTypes.AUTHORIZE_BY_APPLICATION.SUCCESS:\r\n return {\r\n ...state,\r\n authModel: action.payload,\r\n token: action.payload.token,\r\n authorizing: false\r\n };\r\n case actionTypes.AUTHORIZE_BY_APPLICATION.ERROR:\r\n return {\r\n ...state,\r\n authorizing: false\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst persistConfig = {\r\n key: NAME,\r\n storage,\r\n whitelist: ['token', 'authModel', 'paramsToken']\r\n};\r\n\r\nexport default persistReducer(persistConfig, reducer);","import React, {Component} from 'react';\r\nimport {PropagateLoader} from 'react-spinners';\r\n\r\nclass Loader extends Component {\r\n render() {\r\n return (\r\n
\r\n \r\n
);\r\n\r\n }\r\n}\r\n\r\n\r\nexport default Loader;\r\n","import React from 'react';\r\nimport './chartCheckboxItem.css';\r\n\r\nclass ChartCheckboxItem extends React.PureComponent {\r\n onClick = () => {\r\n this.props.onClick(this.props.item);\r\n };\r\n\r\n render() {\r\n const { item, isSelected } = this.props;\r\n return (\r\n
\r\n {item[this.props.textDisplayKey] || 'NONAME'}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ChartCheckboxItem;","import React from 'react';\r\nimport _ from 'lodash';\r\nimport ChartCheckboxItem from '../ChartCheckboxItem/ChartCheckboxItem';\r\nimport './сhartWrapper.css';\r\n\r\nclass ChartWrapper extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: props.data\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!_.isEqual(prevProps.data, this.props.data)) {\r\n this.setState({ items: this.props.data }, this.callback);\r\n }\r\n }\r\n\r\n isSelected = item => {\r\n return !!_.find(this.state.items, i => i[this.props.textDisplayKey] === item);\r\n };\r\n\r\n callback = () => {\r\n this.props.onSelectItems(this.state.items);\r\n };\r\n\r\n onClickCheckbox = item => {\r\n if (this.isSelected(item[this.props.textDisplayKey])) {\r\n this.setState(prevState => ({ items: _.filter(prevState.items, it => it[this.props.textDisplayKey] !== item[this.props.textDisplayKey]) }), this.callback);\r\n } else {\r\n this.setState(prevState => ({ items: [...prevState.items, item] }), this.callback);\r\n }\r\n };\r\n\r\n renderCheckboxItem = item => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n const { children, title, data, description } = this.props;\r\n return (\r\n
\r\n

{title} {description ? {description} : null}

\r\n
\r\n {_.map(data, this.renderCheckboxItem)}\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ChartWrapper;","import React, {Component} from 'react';\r\nimport {ResponsiveBar} from '@nivo/bar';\r\nimport Loader from '../../core/Components/Loader';\r\nimport ChartWrapper from '../../core/Components/ChartWrapper/ChartWrapper';\r\nimport _ from \"lodash\";\r\n\r\nclass BarChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: props.data\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!_.isEqual(prevProps.data, this.props.data)) {\r\n this.setState({ data: this.props.data });\r\n }\r\n }\r\n\r\n onSelectItems = data => {\r\n this.setState({ data });\r\n };\r\n\r\n render() {\r\n const {data, indexBy, loading, onClick, title, textDisplayKey, description} = this.props;\r\n let content;\r\n if(loading){\r\n content = ;\r\n }\r\n if (data && (!data.length || !this.state.data.length) && !loading) {\r\n content =

Not enough data to show you this great chart :(

;\r\n }\r\n if(data && data.length > 0 && !loading && this.state.data.length) {\r\n const keys = Object.keys(data[0]).filter(i => i !== indexBy && i !== 'total');\r\n content = ( {\r\n return (\r\n
\r\n

{data.source}

\r\n

{id}: {value}

\r\n

Total: {data.total}

\r\n
);\r\n }}\r\n fill={[\r\n {\r\n match: {\r\n id: 'processed'\r\n },\r\n id: 'processed'\r\n },\r\n {\r\n match: {\r\n id: 'opened'\r\n },\r\n id: 'opened'\r\n }\r\n ]}\r\n borderColor={{from: 'color', modifiers: [['darker', 1.6]]}}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={{\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: -15,\r\n legendPosition: 'middle',\r\n legendOffset: 32\r\n }}\r\n axisLeft={{\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legend: '',\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n }}\r\n labelSkipWidth={12}\r\n labelSkipHeight={16}\r\n labelTextColor={{from: 'color', modifiers: [['opacity', 1.6]]}}\r\n legends={[\r\n {\r\n dataFrom: 'keys',\r\n anchor: 'bottom-right',\r\n direction: 'column',\r\n justify: false,\r\n translateX: 120,\r\n translateY: 0,\r\n itemsSpacing: 2,\r\n itemWidth: 100,\r\n itemHeight: 20,\r\n itemDirection: 'left-to-right',\r\n itemOpacity: 0.85,\r\n symbolSize: 20,\r\n effects: [\r\n {\r\n on: 'hover',\r\n style: {\r\n itemOpacity: 1\r\n }\r\n }\r\n ]\r\n }\r\n ]}\r\n animate={true}\r\n motionStiffness={90}\r\n motionDamping={15}\r\n />);\r\n }\r\n\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default BarChart;\r\n","import React, {Component} from 'react';\r\nimport {ResponsiveLine} from '@nivo/line';\r\nimport Loader from '../../core/Components/Loader';\r\nimport ChartWrapper from '../../core/Components/ChartWrapper/ChartWrapper';\r\nimport _ from \"lodash\";\r\n\r\n\r\nclass LineChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: props.data\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!_.isEqual(prevProps.data, this.props.data)) {\r\n this.setState({ data: this.props.data });\r\n }\r\n }\r\n\r\n onSelectItems = data => {\r\n this.setState({ data });\r\n };\r\n\r\n render() {\r\n const {data, indexBy, loading, title, textDisplayKey, legendLeftText} = this.props;\r\n let content = null;\r\n\r\n if(loading){\r\n content = ;\r\n }\r\n\r\n if (data && (!data.length || !this.state.data.length) && !loading) {\r\n content =

Not enough data to show you this great chart :(

;\r\n }\r\n if(data && data.length > 0 && !loading && this.state.data.length){\r\n content = ( {\r\n return (\r\n \r\n

{point.serieId}

\r\n

{point.data.x}: {point.data.y}

\r\n \r\n );\r\n }}\r\n />);\r\n }\r\n\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default LineChart;\r\n","import axios from 'axios';\r\n\r\nexport const endpoints = {\r\n sourceStatsByDateRange: (start, end) => `linnworksDashboard/getBySourceAndSubsource/${start.format('MM-DD-YYYY')}/${end.format('MM-DD-YYYY')}`,\r\n yearlySourcesStats: () => 'linnworksDashboard/getYearlySourcesStats',\r\n subscribeToTrialUrl: () => 'linnworksDashboard/subscribeToTrial'\r\n};\r\n\r\nexport const getSourceStatsByDateRange = (start, end) => {\r\n return axios.get(endpoints.sourceStatsByDateRange(start, end));\r\n};\r\n\r\nexport const getYearlySourcesStats = params => {\r\n return axios.get(endpoints.yearlySourcesStats(), { ...params });\r\n};\r\n\r\nexport const subscribeToTrial = params => {\r\n return axios.get(endpoints.subscribeToTrialUrl(), { ...params });\r\n};\r\n","import _ from 'lodash';\r\nimport moment from 'moment';\r\nimport {NAME} from './constants';\r\n\r\nexport const getSoldBySource = state => {\r\n const measurement = getDashboardMeasurement(state);\r\n const dailyStatsBySource = _.get(state[NAME], 'dailySourceStats');\r\n const selected = dailyStatsBySource.map(item => {\r\n if (measurement.value === 'ordersCount') {\r\n return {\r\n source: item.source,\r\n processed: item.processed,\r\n opened: item.received - item.processed,\r\n total: item.received\r\n };\r\n } else {\r\n return {\r\n source: item.source,\r\n processed: Number((Math.round(item.processedCharge * 100) / 100).toFixed(2)),\r\n opened: Number((Math.round((item.totalCharge - item.processedCharge) * 100) / 100).toFixed(2)),\r\n total: Number((Math.round(item.totalCharge * 100) / 100).toFixed(2))\r\n };\r\n }\r\n });\r\n const grouped = [];\r\n selected.forEach(item => {\r\n const index = grouped.findIndex(el => el.source === item.source);\r\n if (index >= 0) {\r\n grouped[index].processed = Number((Math.round((grouped[index].processed + item.processed) * 100) / 100).toFixed(2));\r\n grouped[index].opened = Number((Math.round((grouped[index].opened + item.opened) * 100) / 100).toFixed(2));\r\n grouped[index].total = Number((Math.round((grouped[index].total + item.total) * 100) / 100).toFixed(2));\r\n } else {\r\n grouped.push(item);\r\n }\r\n });\r\n return grouped;\r\n};\r\nexport const getSoldBySubSource = (state) => {\r\n const measurement = getDashboardMeasurement(state);\r\n const dailyStatsBySource = _.get(state[NAME], 'dailySourceStats');\r\n const selected = dailyStatsBySource.filter(item => item.source === state[NAME].selectedSource).map(item => {\r\n if (measurement.value === 'ordersCount') {\r\n return {\r\n subsource: item.subsource,\r\n processed: item.processed,\r\n opened: item.received - item.processed,\r\n total: item.received\r\n };\r\n } else {\r\n return {\r\n subsource: item.subsource,\r\n processed: Number((Math.round(item.processedCharge * 100) / 100).toFixed(2)),\r\n opened: Number((Math.round((item.totalCharge - item.processedCharge) * 100) / 100).toFixed(2)),\r\n total: Number((Math.round(item.totalCharge * 100) / 100).toFixed(2))\r\n };\r\n }\r\n });\r\n const grouped = [];\r\n selected.forEach(item => {\r\n const index = grouped.findIndex(el => el.subsource === item.subsource);\r\n if (index >= 0) {\r\n grouped[index].processed = Number((Math.round((grouped[index].processed + item.processed) * 100) / 100).toFixed(2));\r\n grouped[index].opened = Number((Math.round((grouped[index].opened + item.opened) * 100) / 100).toFixed(2));\r\n grouped[index].total = Number((Math.round((grouped[index].total + item.total) * 100) / 100).toFixed(2));\r\n } else {\r\n grouped.push(item);\r\n }\r\n });\r\n return grouped;\r\n};\r\n\r\nexport const getSoldBySourceYearly = (state) => {\r\n const measurement = getDashboardMeasurement(state);\r\n const yearlySourceStats = _.get(state[NAME], 'yearlySourceStats.reportBySourceAndYear', []);\r\n\r\n const result = [];\r\n\r\n yearlySourceStats.forEach(item => {\r\n const index = result.findIndex(el => el.id === item.source);\r\n if (index >= 0) {\r\n if (measurement.value === 'ordersCount') {\r\n result[index].data.push(\r\n {\r\n x: item.year,\r\n y: Number((item.received).toFixed(2))\r\n });\r\n } else {\r\n result[index].data.push(\r\n {\r\n x: item.year,\r\n y: Number((item.totalCharge).toFixed(2))\r\n\r\n });\r\n }\r\n } else {\r\n if (measurement.value === 'ordersCount') {\r\n result.push({\r\n id: item.source,\r\n data: [\r\n {\r\n x: item.year,\r\n y: Number((item.received).toFixed(2))\r\n }\r\n ]\r\n });\r\n } else {\r\n result.push({\r\n id: item.source,\r\n data: [\r\n {\r\n x: item.year,\r\n y: Number((item.totalCharge).toFixed(2))\r\n }\r\n ]\r\n });\r\n }\r\n }\r\n });\r\n return result;\r\n};\r\n\r\n\r\nexport const getSoldBySourceMonthly = (state) => {\r\n const measurement = getDashboardMeasurement(state);\r\n const monthlySourceStats = _.get(state[NAME], 'yearlySourceStats.reportBySourceYearAndMonth', []);\r\n\r\n const result = [];\r\n\r\n monthlySourceStats.forEach(item => {\r\n const index = result.findIndex(el => el.id === item.source);\r\n if (index >= 0) {\r\n if (measurement.value === 'ordersCount') {\r\n result[index].data.push(\r\n {\r\n x: moment.months(item.month - 1),\r\n y: item.received\r\n });\r\n } else {\r\n result[index].data.push(\r\n {\r\n x: moment.months(item.month - 1),\r\n y: item.totalCharge\r\n\r\n });\r\n }\r\n } else {\r\n if (measurement.value === 'ordersCount') {\r\n result.push({\r\n id: item.source,\r\n data: [\r\n {\r\n x: moment.months(item.month - 1),\r\n y: item.received\r\n }\r\n ]\r\n });\r\n } else {\r\n result.push({\r\n id: item.source,\r\n data: [\r\n {\r\n x: moment.months(item.month - 1),\r\n y: item.totalCharge\r\n }\r\n ]\r\n });\r\n }\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nexport const getDailySourceStatsLoading = (state) => _.get(state[NAME], 'dailySourceStatsLoading');\r\nexport const getDashboardMeasurement = (state) => _.get(state[NAME], 'dashboardMeasurement', 'Please select');\r\n\r\nexport const getSelectedSource = state => state[NAME].selectedSource;\r\nexport const getTrial = state => state[NAME].trialCreated;","import React from 'react';\r\nimport _ from 'lodash';\r\nimport './switchSelector.css';\r\n\r\nclass SwitchSelector extends React.PureComponent {\r\n get isSecondSelected() {\r\n return this.props.value.value === this.props.options[1].value;\r\n }\r\n\r\n renderItem = item => {\r\n return (\r\n this.props.onChange(item)}\r\n className={`switchSelectorItem ${item.value === this.props.value.value ? 'switchSelectorItem--selected' : ''}`}>\r\n {item.label}\r\n \r\n )\r\n };\r\n\r\n render() {\r\n const { options } = this.props;\r\n return (\r\n
\r\n {_.map(options, this.renderItem)}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SwitchSelector;","import _ from 'lodash';\r\nimport { NAME } from './constants';\r\n\r\nexport const getParamsToken = state => _.get(state[NAME], 'paramsToken');\r\nexport const getAuthorizeToken = state => _.get(state[NAME], 'token');\r\nexport const getBaseExtension = state => _.get(state[NAME], 'authModel.server');\r\nexport const isAuthorizing = state => _.get(state[NAME], 'authorizing');","import React, {Component} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport DateRangePicker from \"react-daterange-picker\";\r\nimport BarChart from \"./Barchart\";\r\nimport LineChart from \"./Linechart\";\r\nimport {getSourceStatsByDateRange, getYearlySourceStats, subscribeToTrial, sourceSelected, measurementSelected} from \"../actions\";\r\nimport {Col, Grid, Row} from \"react-flexbox-grid\";\r\nimport * as selectors from \"../selectors\";\r\nimport {ALL_DASHBOARD_MEASUREMENTS} from \"../constants\";\r\nimport SwitchSelector from \"../../core/Components/SwitchSelector/SwitchSelector\";\r\nimport \"react-daterange-picker/dist/css/react-calendar.css\";\r\nimport \"./dashboard.css\";\r\nimport * as authSelectors from \"../../Auth/selectors\";\r\n\r\nclass Dashboard extends Component {\r\n onDateRangeChange = dates => {\r\n this.setState({dates}, () => {\r\n this.props.getSourceStatsByDateRange(dates.start, dates.end);\r\n });\r\n };\r\n onSourceClick = (node) => {\r\n this.props.sourceSelected(node.data.source);\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dates: moment().range(moment().startOf(\"day\").add(-7, \"days\"), moment().startOf(\"day\"))\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n const {start, end} = this.state.dates;\r\n this.props.getSourceStatsByDateRange(start, end);\r\n this.props.getYearlySourceStats();\r\n }\r\n\r\n measurementChanged = selectedOption => {\r\n this.props.measurementSelected(selectedOption);\r\n };\r\n\r\n subscribeToTrial = () => {\r\n this.props.subscribeToTrial();\r\n };\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps){\r\n if(nextProps.trialCreated){\r\n //document.location.replace(\"https://dash.prodashes.com?token=\" + nextProps.paramsToken);\r\n }\r\n }\r\n\r\n render() {\r\n const {soldBySource, soldBySubSource, dailySourceStatsLoading, dashboardMeasurement, soldBySourceYearly, soldBySourceMonthly, selectedSource} = this.props;\r\n return (\r\n \r\n \r\n

Pro Version available!

\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 \r\n \r\n
\r\n

Check out what PRO version includes!

\r\n

Drag'n'Drop and Resize feature! With saving your configuration!

\r\n
\r\n

- Orders dashboard

\r\n

1. Orders count received for each Source by selected date range.

\r\n

2. Orders count received for All Subsources and selected Source by selected date\r\n range.

\r\n

3. Orders count monthly this year for each source

\r\n

4. Orders count yearly for the whole hisory.

\r\n

5. Orders daily for each source for selected date range

\r\n\r\n

- Sales dashboard

\r\n

1. Orders revenue daily for each source for selected date range

\r\n

2. Orders revenue received for each Source by selected date range.

\r\n

3. Orders revenue received for All Subsources and selected Source by selected date\r\n range.

\r\n

4. Orders revenue monthly this year for each source

\r\n

5. Orders revenue count yearly for the whole hisory.

\r\n\r\n

- User Performance dashboard

\r\n

1. Count of processed orders monthly within last 6 months.

\r\n

2. Count of processed orders daily within last 14 days.

\r\n

3. Count of processed orders hourly within last 24 hours.

\r\n\r\n

- Inventory dashboard

\r\n

1. Top 10 SKUs sold (processed) within last 30 days - Count and orders count

\r\n

2. Top 10 SKUs sold (processed) within last 30 days - Revenue and Profit

\r\n

3. Top 10 SKUs sold (processed) within last year - Count and orders count

\r\n

4. Top 10 SKUs sold (processed) within last year - Revenue and Profit

\r\n

5. Top 10 SKUs sold (processed) for selected date range - Sold (procesed) daily

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n const soldBySource = selectors.getSoldBySource(state);\r\n const soldBySubSource = selectors.getSoldBySubSource(state);\r\n const dailySourceStatsLoading = selectors.getDailySourceStatsLoading(state);\r\n const dashboardMeasurement = selectors.getDashboardMeasurement(state);\r\n const soldBySourceYearly = selectors.getSoldBySourceYearly(state);\r\n const soldBySourceMonthly = selectors.getSoldBySourceMonthly(state);\r\n const trialCreated = selectors.getTrial(state);\r\n const paramsToken = authSelectors.getParamsToken(state);\r\n return {\r\n soldBySource,\r\n soldBySubSource,\r\n dailySourceStatsLoading,\r\n dashboardMeasurement,\r\n soldBySourceYearly,\r\n soldBySourceMonthly,\r\n trialCreated,\r\n selectedSource: selectors.getSelectedSource(state),\r\n paramsToken\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, {\r\n getSourceStatsByDateRange,\r\n getYearlySourceStats,\r\n sourceSelected,\r\n measurementSelected,\r\n subscribeToTrial\r\n})(Dashboard);\r\n","import * as actionTypes from './actionTypes';\r\nimport * as api from './api';\r\n\r\nexport const getSourceStatsByDateRange = (start, end) => async dispatch => {\r\n dispatch({ type: actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.REQUEST });\r\n return api.getSourceStatsByDateRange(start, end)\r\n .then(response => {\r\n dispatch({\r\n type: actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.SUCCESS,\r\n payload: response.data\r\n });\r\n })\r\n .catch(error => {\r\n dispatch({ type: actionTypes.GET_SOURCE_STATS_BE_DATE_RANGE.ERROR });\r\n });\r\n};\r\n\r\nexport const getYearlySourceStats = (data) => async dispatch => {\r\n dispatch({ type: actionTypes.GET_YEARLY_SOURCE_STATS.REQUEST });\r\n return api.getYearlySourcesStats(data)\r\n .then(response => {\r\n dispatch({\r\n type: actionTypes.GET_YEARLY_SOURCE_STATS.SUCCESS,\r\n payload: response.data\r\n });\r\n })\r\n .catch(error => {\r\n dispatch({ type: actionTypes.GET_YEARLY_SOURCE_STATS.ERROR });\r\n });\r\n};\r\n\r\nexport const subscribeToTrial = () => async dispatch => {\r\n return api.subscribeToTrial()\r\n .then(response => {\r\n if(response){\r\n dispatch({ type: actionTypes.TRIAL_CREATED.SUCCESS });\r\n alert('Please reload this page to see PRO Version!');\r\n }else{\r\n alert('Something went wrong in LW side :( try upgrade manually from App Store')\r\n }\r\n })\r\n .catch(error => {\r\n alert('Something went wrong in LW side :( try upgrade manually from App Store')\r\n });\r\n};\r\n\r\nexport const sourceSelected = (data) => async dispatch => {\r\n dispatch({ type: actionTypes.SOURCE_CHANGED.SUCCESS, payload: data });\r\n};\r\n\r\nexport const measurementSelected = (data) => async dispatch => {\r\n dispatch({ type: actionTypes.MEASUREMENT_CHANGED.SUCCESS, payload: data });\r\n};\r\n","import axios from 'axios';\r\n\r\nexport const endpoints = {\r\n autorizeByApplication: (token) => `linnworksAuth/authorize/${token}`\r\n};\r\n\r\nexport const autorizeByApplication = token => {\r\n return axios.get(endpoints.autorizeByApplication(token));\r\n};","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport {Route} from 'react-router';\r\nimport _ from 'lodash';\r\nimport Dashboard from './Modules/Dashboard/Components/Dashboard';\r\nimport * as authSelectors from './Modules/Auth/selectors';\r\nimport {authorize} from './Modules/Auth/actions';\r\nimport Loader from './Modules/core/Components/Loader';\r\n\r\nclass App extends Component {\r\n componentWillMount() {\r\n const {searchParams} = this.props;\r\n let hashes = searchParams.slice(searchParams.indexOf('?') + 1).split('&');\r\n let params = {};\r\n hashes.map(hash => {\r\n let [key, val] = hash.split('=');\r\n params[key] = decodeURIComponent(val);\r\n });\r\n if (!this.props.token || this.props.paramsToken !== params['token']) {\r\n this.props.authorize(params['token']);\r\n }\r\n }\r\n\r\n render() {\r\n const {authorizing, token} = this.props;\r\n return (authorizing || !token ?\r\n \r\n :\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n const token = authSelectors.getAuthorizeToken(state);\r\n const paramsToken = authSelectors.getParamsToken(state);\r\n const authorizing = authSelectors.isAuthorizing(state);\r\n const searchParams = _.get(state, 'router.location.search', '');\r\n return {\r\n token,\r\n searchParams,\r\n authorizing,\r\n paramsToken\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, {authorize})(App);\r\n","import * as actionTypes from './actionTypes';\r\nimport * as api from './api';\r\n\r\nexport const authorize = (data) => async dispatch => {\r\n dispatch({\r\n type: actionTypes.AUTHORIZE_BY_APPLICATION.REQUEST,\r\n payload: data\r\n });\r\n return api.autorizeByApplication(data)\r\n .then(response => {\r\n dispatch({\r\n type: actionTypes.AUTHORIZE_BY_APPLICATION.SUCCESS,\r\n payload: response.data\r\n });\r\n })\r\n .catch(error => {\r\n dispatch({type: actionTypes.AUTHORIZE_BY_APPLICATION.ERROR});\r\n });\r\n};","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","export const BASE_URL = 'https://linnworks.brainence.com/api/';","import axios from 'axios';\r\nimport _ from 'lodash';\r\nimport * as coreConstants from './constants';\r\nimport * as selectors from '../Auth/selectors';\r\n\r\nconst configAxios = store => {\r\n axios.defaults.baseURL = coreConstants.BASE_URL;\r\n axios.defaults.headers.common['Content-Type'] = 'application/json; charset=utf-8';\r\n axios.defaults.headers.common.Pragma = 'no-cache';\r\n\r\n axios.interceptors.request.use(async config => {\r\n const accessToken = selectors.getAuthorizeToken(store.getState());\r\n if (!accessToken) {\r\n return updateAuthorizationHeader(config);\r\n }\r\n const baseExtension = selectors.getBaseExtension(store.getState());\r\n\r\n return updateAuthorizationHeader(config, accessToken, baseExtension);\r\n }, error => Promise.reject(error));\r\n\r\n axios.interceptors.response.use(response => response,\r\n error => {\r\n if (error && _.get(error, 'response.status') === 401) {\r\n console.log('NOT AUTHORIZED!');\r\n debugger;\r\n throw new Error('NOT AUTHORIZED');\r\n }\r\n throw error;\r\n }\r\n );\r\n};\r\n\r\nconst updateAuthorizationHeader = (config, accessToken = '', baseExtension = '') => {\r\n const c = config;\r\n if (accessToken) {\r\n c.headers.common.Authorization = `${accessToken}`;\r\n } else {\r\n c.headers.common = _.omit(c.headers.common, ['Authorization']);\r\n }\r\n if (baseExtension) {\r\n c.headers['BaseExtension'] = `${baseExtension}`;\r\n } else {\r\n c.headers = _.omit(c.headers, ['BaseExtension']);\r\n }\r\n return c;\r\n};\r\n\r\nexport default configAxios;","import 'bootstrap/dist/css/bootstrap.min.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {Provider} from 'react-redux';\r\nimport {ConnectedRouter} from 'connected-react-router';\r\nimport {createBrowserHistory} from 'history';\r\nimport {persistStore} from 'redux-persist';\r\nimport {PersistGate} from 'redux-persist/integration/react';\r\nimport configureStore from './configureStore';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport configAxios from './Modules/core/configAxios';\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst history = createBrowserHistory({basename: baseUrl});\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst initialState = window.initialReduxState;\r\nconst store = configureStore(history, initialState);\r\nconst persistor = persistStore(store, null);\r\nconfigAxios(store);\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n","import {applyMiddleware, combineReducers, compose, createStore} from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport {routerMiddleware, connectRouter} from 'connected-react-router';\r\nimport dashboard from './Modules/Dashboard/reducer';\r\nimport auth from './Modules/Auth/reducer';\r\n\r\nexport default function configureStore(history, initialState) {\r\n const reducers = {\r\n dashboard,\r\n auth\r\n };\r\n\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n // In development, use the browser's Redux dev tools extension if installed\r\n const enhancers = [];\r\n const isDevelopment = process.env.NODE_ENV === 'development';\r\n if (isDevelopment && typeof window !== 'undefined' && window.devToolsExtension) {\r\n enhancers.push(window.devToolsExtension());\r\n }\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n"],"sourceRoot":""}