{"version":3,"sources":["assets/images/home.svg","assets/images/subway.svg","assets/images/wet.svg","assets/images/magnet.svg","assets/images/generator.svg","assets/images/abb-logo.svg","assets/images/Google_Train_icon.svg","assets/images/train.svg","assets/images/abb_help.svg","assets/images/Menu.svg","assets/images/icon-config.svg","assets/images/feedback.svg","assets/images/help.svg","assets/images/goToLink.svg","assets/images/user.svg","assets/images/logout.svg","web.config","containers/Login/aes-encryption.js","components/PrivateRoute/index.jsx","containers/DashBoard/messages.js","components/LoadingIndicator/index.js","components/Loading/index.js","components/Googlemapkey/dashboardMapConfig.js","components/DashboardMap/index.js","components/Breadcrumb/index.js","components/DateDiffText/index.js","components/DatePicker/messages.js","components/DatePicker/index.js","containers/DashBoard/constants.js","containers/DashBoard/actions.js","containers/DashBoard/selectors.js","components/Icons/index.js","components/FleetView/messages.js","components/FleetView/index.js","containers/TrainViewPage/constants.js","containers/TrainViewPage/actions.js","containers/DetailTrainPage/constants.js","containers/DetailTrainPage/actions.js","components/Help/index.js","containers/DashBoard/index.js","components/NotFound.js","containers/ErrorPages/NetworkError.js","containers/ErrorPages/ServerError.js","components/SingleGraph/function.js","containers/DetailTrainPage/messages.js","containers/DetailTrainPage/SingleGraphPage/messages.js","containers/DetailTrainPage/SingleGraphPage/constants.js","components/Title/TitleBar/index.js","components/Title/FilterDetails/index.js","components/Title/SignalSelector/messages.js","components/Title/SignalSelector/index.js","components/SingleGraph/index.js","components/Googlemapkey/index.js","components/DetailViewMap/index.js","components/DetailViewMapSlider/index.js","components/DetailViewMapDateSlider/index.js","components/DetailViewMapLegend/index.js","containers/DetailTrainPage/SingleGraphPage/index.js","components/SideMenuItems/index.js","components/SideMenu/index.js","containers/DetailTrainPage/selectors.js","containers/TrainViewPage/selectors.js","containers/DetailTrainPage/index.js","containers/TrainViewPage/messages.js","components/TrainViewMap/index.js","components/Graph/function.js","components/Graph/index.js","components/DistanceSelector/rangeLine.js","components/DistanceSelector/index.js","components/Title/FilterDetailsTrainview/index.js","containers/TrainViewPage/TrainView/index.js","containers/TrainViewPage/index.js","containers/Login/selectors.js","components/Login/index.js","containers/Login/constants.js","containers/Login/actions.js","containers/Login/index.js","components/Header/Header.js","containers/Header/index.js","router.js","components/Footer/VersionInfo.js","App.js","serviceWorker.js","containers/DashBoard/reducers.js","containers/TrainViewPage/reducers.js","containers/DetailTrainPage/reducers.js","containers/Login/reducers.js","reducers/index.js","utils/api-utils.js","utils/api-config.js","utils/api.js","containers/DashBoard/sagas.js","containers/DetailTrainPage/sagas.js","containers/TrainViewPage/sagas.js","containers/Login/sagas.js","sagas/index.js","store.js","index.js","assets/images/exportChart.svg"],"names":["module","exports","__webpack_require__","p","AESEncrypt","number","key","CryptoJS","enc","Utf8","parse","iv","AES","encrypt","keySize","mode","CBC","padding","pad","Pkcs7","toString","SessionStoragedecrypt","ciphertext","decrypt","PrivateRoute","_ref","Component","component","isAuthenticated","rest","Object","objectWithoutProperties","react_default","a","createElement","Route","assign","render","props","sessionStorage","getItem","Redirect","to","pathname","state","from","location","defaultProps","withRouter","defineMessages","header","id","defaultMessage","require","LoadingIndicator","className","Loading","disabled","components_LoadingIndicator","googleMapURL","concat","googleMapCustomStyle","elementType","stylers","color","visibility","featureType","DashbordMap","withScriptjs","withGoogleMap","lib","defaultZoom","defaultCenter","lat","lng","disableDefaultUI","mapTypeId","options","styles","streetViewControl","draggableCursor","mapPath","map","object","i","rns","routeposition","path","dat","onMouseOver","onHover","nm","onMouseOut","onHoverOut","strokeColor","routeSeleted","routeColorHover","routeColor","strokeWeight","zIndex","NoDashbordMap","DashboardMap","excludeInvalidGps","_this","filter","element","data","some","subElement","gpsValid","undefined","this","length","loadingElement","style","height","containerElement","mapElement","Breadcrumb","Row","Col","md","src","alt","BreadcrumbPath","indexOf","NavLink","NumberofTrains","React","DateDiffText","getDifferenceText","StartDate","EndDate","localStartDate","localEndDate","diff","moment","d","duration","days","Math","floor","asHours","hours","minutes","asMinutes","msg","text","startdate","enddate","problem","Moment","locale","momentLocalizer","Datepicker","_getPrototypeOf2","classCallCheck","_len","arguments","args","Array","_key","possibleConstructorReturn","getPrototypeOf","call","apply","handleDatePickerChange","name","value","setState","defineProperty","checkDateValidation","endDate","startDate","Date","replace","_this2","isValid","xs","sm","DateTimePicker_default","max","subtract","endOf","format","timeFormat","onChange","inputProps","readOnly","index_es","messages","components_DateDiffText","Button","variant","size","onClick","onApplyClick","FETCH_MAP_DATA","FETCH_MAP_DATA_SUCCESS","FETCH_MAP_DATA_FAILURE","FETCH_TRAIN_LIST","FETCH_TRAIN_LIST_SUCCESS","FETCH_TRAIN_LIST_FAILURE","SET_CURRENT_TRAIN","SET_DATE","fetchMapData","type","payload","fetchMapDataSucess","Mapdata","fetchMapDataFailure","error","fetchTrainList","fetchTrainListSucess","TrainList","fetchTrainListFailure","setSelectedTrain","trainName","setDate","selectedTrainSelector","createSelector","get","fleetDataSelector","startDateSelector","formatedStartDate","endDateSelector","formatedEndDate","IconTimeTrend","width","viewBox","version","xmlns","stroke","stroke-width","fill","fill-rule","xlinkHref","mask","x","y","IconScatterPlot","IconHistogram","IconGps","FLEETLIST","FleetView","Card","Header","Body","fetching","components_Loading","trainData","train","td","onTrainSelect","wix","ec","rtm","GET_TRAINVIEW_HISTOGRAM","GET_TRAINVIEW_HISTOGRAM_SUCCESS","GET_TRAINVIEW_HISTOGRAM_FAILURE","CLEAR_TRAINVIEW_HISTOGRAM","SET_TAB","GET_TRAINVIEW_MAP","GET_TRAINVIEW_MAPSLIP1_SUCCESS","GET_TRAINVIEW_MAPSLIP2_SUCCESS","GET_TRAINVIEW_MAPSPEED1_SUCCESS","GET_TRAINVIEW_MAPSPEED2_SUCCESS","GET_TRAINVIEW_MAPEFFORT1_SUCCESS","GET_TRAINVIEW_MAPEFFORT2_SUCCESS","GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS","GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS","GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS","GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS","GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS","GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS","GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS","GET_TRAINVIEW_MAP_FAILURE","CLEAR_TRAINVIEW_MAP","getTrainViewMapSlip1Success","getTrainViewMapSlip2Success","getTrainViewMapSpeed1Success","getTrainViewMapSpeed2Success","getTrainViewMapEffort1Success","getTrainViewMapEffort2Success","getTrainViewMapEffortDriving1Success","getTrainViewMapEffortDriving2Success","getTrainViewMapEffortBraking1Success","getTrainViewMapEffortBraking2Success","getTrainViewMapEffortBrakingMech1Success","getTrainViewMapEffortBrakingMech2Success","getTrainViewMapDrivingTrailerVel1Success","getTrainViewMapFailure","clearTrainViewMap","getTrainViewHistogramSuccess","getTrainViewHistogramFailure","clearTrainViewHistogram","setTab","SET_TIMETREND_LOADING","GET_DETAILVIEW_TIMETREND","GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS","GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS","GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS","GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS","GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS","GET_DETAILVIEW_TIMETREND_FAILURE","CLEAR_DETAILVIEW_TIMETREND","GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS","GET_DV_TT_EFFORTREFERENCE1_SUCCESS","GET_DV_TT_EFFORTREFERENCE2_SUCCESS","GET_DV_TT_SLIPPOWER1_SUCCESS","GET_DV_TT_SLIPPOWER2_SUCCESS","GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS","GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS","GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS","GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS","GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS","GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS","GET_DETAILVIEW_MAP","GET_DETAILVIEW_MAPSLIP1_SUCCESS","GET_DETAILVIEW_MAPSLIP2_SUCCESS","GET_DETAILVIEW_MAPSPEED1_SUCCESS","GET_DETAILVIEW_MAPSPEED2_SUCCESS","GET_DETAILVIEW_MAPEFFORT1_SUCCESS","GET_DETAILVIEW_MAPEFFORT2_SUCCESS","GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS","GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS","GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS","GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS","GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS","GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS","GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS","GET_DV_MAPEFFORTREFERENCE1_SUCCESS","GET_DV_MAPEFFORTREFERENCE2_SUCCESS","GET_DV_MAPSLIPPOWER1_SUCCESS","GET_DV_MAPSLIPPOWER2_SUCCESS","GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS","GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS","GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS","GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS","GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS","GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS","GET_DETAILVIEW_MAP_FAILURE","CLEAR_DETAILVIEW_MAP","GET_DETAILVIEW_MAPDATESLIDER","GET_DETAILVIEW_MAPDATESLIDER_SUCCESS","GET_DETAILVIEW_MAPDATESLIDER_FAILURE","CLEAR_DETAILVIEW_MAPDATESLIDER","GET_DETAILVIEW_SCATTERPLOT","GET_DETAILVIEW_SCATTERPLOT_SUCCESS","GET_DETAILVIEW_SCATTERPLOT_FAILURE","GET_DETAILVIEW_SCATTERPLOT2_SUCCESS","CLEAR_DETAILVIEW_SCATTERPLOT","GET_DETAILVIEW_HISTOGRAM","GET_DETAILVIEW_HISTOGRAM_SUCCESS","GET_DETAILVIEW_HISTOGRAM_FAILURE","CLEAR_DETAILVIEW_HISTOGRAM","SET_FILTER","SET_FILTER_ADVANCED","SET_MAINTRENDSIGNAL","SET_MAINSCATTERSIGNAL","ADD_OVERLAY","CLEAR_BASICFILTER","CLEAR_ADVANCEDFILTER","SET_LOADING","setTimetrendLoading","getDetailViewMapSlip1Success","getDetailViewMapSlip2Success","getDetailViewMapSpeed1Success","getDetailViewMapSpeed2Success","getDetailViewMapEffort1Success","getDetailViewMapEffort2Success","getDetailViewMapEffortDriving1Success","getDetailViewMapEffortDriving2Success","getDetailViewMapEffortBraking1Success","getDetailViewMapEffortBraking2Success","getDetailViewMapEffortBrakingMech1Success","getDetailViewMapEffortBrakingMech2Success","getDvMapDrivingTrailerVel1Success","getDvMapEffortReference1Success","getDvMapEffortReference2Success","getDvMapSlipPower1Success","getDvMapSlipPower2Success","getDvMapPowerBrakingMechanical1Success","getDvMapPowerBrakingMechanical2Success","getDvMapAirPressureBrakeCylinder1Success","getDvMapAirPressureBrakeCylinder2Success","getDvMapAmplitudeTorsionalOscillation1Success","getDvMapAmplitudeTorsionalOscillation2Success","getDetailViewMapFailure","clearDetailViewMap","getDetailViewMapDateSliderSucess","clearDetailViewMapDateSlider","getDetailViewTimetrend","docType","bogie","getDetailViewTimetrendSlip1Success","getDetailViewTimetrendSlip2Success","getDetailViewTimetrendSpeed1Success","getDetailViewTimetrendSpeed2Success","getDetailViewTimetrendEffort1Success","getDetailViewTimetrendEffort2Success","getDetailViewTimetrendEffortDriving1Success","getDetailViewTimetrendEffortDriving2Success","getDetailViewTimetrendEffortBraking1Success","getDetailViewTimetrendEffortBraking2Success","getDetailViewTimetrendEffortBrakingMech1Success","getDetailViewTimetrendEffortBrakingMech2Success","getDvTtDrivingTrailerVel1Success","getDvTtEffortReference1Success","getDvTtEffortReference2Success","getDvTtSlipPower1Success","getDvTtSlipPower2Success","getDvTtPowerBrakingMechanical1Success","getDvTtPowerBrakingMechanical2Success","getDvTtAirPressureBrakeCylinder1Success","getDvTtAirPressureBrakeCylinder2Success","getDvTtAmplitudeTorsionalOscillation1Success","getDvTtAmplitudeTorsionalOscillation2Success","getDetailViewTimetrendFailure","clearDetailViewTimetrend","getDetailViewScatterplot","xAxisSignal","yAxisSignal","scatterplotAvg","getDetailViewScatterplotSuccess","getDetailViewScatterplotFailure","getDetailViewScatterplot2Success","clearDetailViewScatterplot","setBasicFilter","clearBasicFilter","setMainTrendSignal","trend","getDetailViewHistogram","zAxisSignal","getDetailViewHistogramSuccess","getDetailViewHistogramFailure","clearDetailViewHistogram","Help","handleClick","flag","openWin1","react","class","href","index_modern","title","onClose","build","atomic","Dashboard","onMouseOverEvent","currentLine","isHover","lineSeleted","document","getElementById","scrollIntoView","behavior","onMouseOutEvent","applyDateChange","asyncToGenerator","regenerator_default","mark","_callee","start_Date","end_Date","_args","wrap","_context","prev","next","valueOf","abrupt","getMapData","getTrainList","stop","_x","_x2","_ref2","_callee2","selectedTrain","_context2","history","push","_x3","lineColor","lineColorHover","_this$props","loading","mapdata","fleetData","loadingMap","components_Help","components_Breadcrumb","BreadcrumbIcon","DatePicker_Datepicker","Fragment","components_FleetView","components_DashboardMap","Alert_default","dismissible","mapStateToProps","createStructuredSelector","mapDispatchToProps","connect","NotFound","NetworkError","_React$Component","inherits","createClass","navigator","onLine","window","bsStyle","xMin","xMax","ServerError","clickDragText","overlaySignalOptions","mainSignalTrendOptions","mainSignalScatterOptions","xAxisSignalHistogramOptions","yAxisSignalHistogramOptions","zAxisSignalHistogramOptions","TitleBar","trainno","onClickRedirectMap","Col_default","FilterDetails","basicFilter","advancedFilter","strOperation","strTemperature","strDrivingtrailervelocity","strSander","strTOprotection","strAntislipbrake","weather","operation","sort","item","temperature","drivingtrailervelocity","sander","toprotection","antislipbrake","mainSignalText","addOverlaysText","xAxisSignalText","yAxisSignalText","zAxisSignalText","SignalSelector","context","backButton","open","selectedSignals","Row_default","chartType","DropdownList_default","mainSignalValues","selectedMain","clickMainSignal","defaultValue","handleScatterplotAvgMaxChange","Multiselect_default","placeholder","clickOverlaySignal","overlaySignalValues","selectedOverlays","selectedSignalsHistogram","handleHistogramDropdownChange","yaxisSignalValues","zaxisSignalValues","paddingTop","getHistogramDataBasedonUserSelection","PureComponent","colors","checkChatValues","chartValues","isVisible","config","label","getTrendChart","chart","advanced_filter","loadMoreFunc","_chart","console","log","xAxis","rangedata","averages","xaxisvalue","seriesValues","yAxis","_loop","j","formatedDate","utc","ts","avg","min","current","previous","rangecurrent","rangeprevious","rangenext","forEach","index","marker","enabled","low","high","tooltip","valueSuffix","unit","boostThreshold","turboThreshold","Number","MAX_VALUE","lineWidth","linkedTo","fillOpacity","opposite","tickInterval","tickAmount","visible","labels","categories","crosshair","gridLineWidth","gridLineColor","afterSetExtremes","event","currentChart","target","_currentChart$chart$x","getExtremes","trigger","dataMin","dataMax","ceil","resetbtn","getElementsByClassName","display","series","getSingleTrendData","debug","plotBackgroundColor","plotBorderWidth","plotShadow","zoomType","panning","panKey","marginBottom","load","credits","boost","useGPUTranslations","usePreAllocated","subtitle","samptime","align","shared","plotOptions","stickyTracking","animation","point","events","click","setItem","category","line","allowPointSelect","cursor","dataLabels","showInLegend","gapSize","arearange","legend","verticalAlign","itemMarginTop","itemMarginBottom","symbolPadding","symbolWidth","itemStyle","fontWeight","fontSize","backgroundColor","Highcharts","theme","legendBackgroundColor","exporting","buttons","contextButton","_id","symbol","exportChart","symbolX","symbolY","symbolSize","states","hover","pressed","highchartsMore","HC_exporting","HC_heatMap","HC_boost_canvas","HC_boost","tempdata","SingleGraph","initGraph","seriesData","selectedOverlaysTrend","selectedMainTrend","onLoadMoreGraph","trendsParam","lang","selectedScatter","c","bnm","radius","marginTop","enableMouseTracking","shadow","resetZoomButton","position","relativeTo","documentType","resampleInterval","xsn","xsu","startOnTick","endOnTick","showLastLabel","ysn","ysu","layout","floating","defaultOptions","borderWidth","scatter","formatter","getScatterSingleSignal","selectedMainScatter","doc","cfg","minRange","gridZIndex","minPadding","maxPadding","tickWidth","reversed","colorAxis","stops","colsize","bin","rowsize","nullColor","nlv","symbolHeight","heatmap","getOptions","menuItems","zoomIn","showResetZoom","setExtremes","onHistogramXaxisChange","setData","redraw","setTimeout","draw","nextProps","_this3","zoomOut","destroy","container","objectSpread","reflow","_this4","ref","lightness","prevPosition","prevPositionIsvalidFalse","startPosition","startFlag","DetailViewGoogleMap","positions","obj","gvd","pos","currentColor","cla","clr","find","ftr","opm","markerPosition","defaultAnimation","google","maps","Animation","DROP","icon","url","scale","fillColor","anchor","DetailViewMap","selectedRun","mapData","runId","rid","nextValidGpsIndex","findIndex","DetailViewMap_NoDashbordMap","Handle","_ref$handle","handle","percent","getHandleProps","changetextdirection","km","ava","formaTdate","left","DetailViewMapSlider","selectedInterval","disValue","onUpdate","react_compound_slider_es","domain","step","values","getRailProps","colorArea","val","_ref3","handles","MenuItem","totalRuns","selected","Menu","list","el","dt","trs","DetailViewMapDateSlider_MenuItem","Arrow","ArrowLeft","ArrowRight","DateSlider","dynamicDatesList","mapTotalRuns","alignCenter","clickWhenDrag","dragging","hideArrows","hideSingleArrow","itemsCount","translate","transition","wheel","menu","_this$state","react_horizontal_scrolling_menu_build_default","arrowLeft","arrowRight","onSelect","onMapDateSelect","selectedDate","scrollToSelected","scrollBy","DetailViewMapLegend","activeSignal","SingleTrendPage","updateHistogram","child","slicedToArray","removeItem","filterValue","prevFilterValue","onMapTabClick","onClickTab","addOverlay","onMapSliderClick","runID","setZoomIntervalByRunSelection","onMapReset","createRef","Title_TitleBar","Tabs_default","activeKey","selectedTab","tab","Tab_default","eventKey","Icons_IconGps","Title_FilterDetails","startZoomInterval","endZoomInterval","lockedZoomDuration","components_DetailViewMap","DetailViewMapLegend_DetailViewMapLegend","DetailViewMapDateSlider_DateSlider","onMouseDown","DetailViewMapSlider_DetailViewMapSlider","unt","trim","Icons_IconTimeTrend","Title_SignalSelector","clickMainSignalTrend","clickOverlaySignalTrend","isButtonDisabled","loadingOverlay","timetrendata","loadingTimetrend","onclick","loadintText","SingleGraph_SingleGraph","Icons_IconScatterPlot","handleScatterDropdownChange","scatterplotdata","loadingScatterB2","Icons_IconHistogram","clickMainSignalScatter","histogramdata","startTime","endTime","startTimeDate","endTimeDate","graphsData","BasicFilter","Form_default","Check","custom","checked","includes","AdvanceFilter","clearAdvancedFilter","trainList","SideMenu","SideMenuItems","SideMenuItems_BasicFilter","advanceFilter","SideMenuItems_AdvanceFilter","onChangeAdvanced","selectCommonDetails","selectMapDetails","selectTimetrendDetails","basicFilterSelector","advancedFilterSelector","selectedMainTrendSelector","selectedOverlaysTrendSelector","timetrendSlip1Selector","timetrendSlip2Selector","timetrendSpeed1Selector","timetrendSpeed2Selector","timetrendEffort1Selector","timetrendEffort2Selector","timetrendEffortDriving1Selector","timetrendEffortDriving2Selector","timetrendEffortBraking1Selector","timetrendEffortBraking2Selector","timetrendEffortBrakingMech1Selector","timetrendEffortBrakingMech2Selector","ttDrivingTrailerVel1Selector","ttEffortReference1Selector","ttEffortReference2Selector","ttSlipPower1Selector","ttSlipPower2Selector","ttPowerBrakingMechanical1Selector","ttPowerBrakingMechanical2Selector","ttAirPressureBrakeCylinder1Selector","ttAirPressureBrakeCylinder2Selector","ttAmplitudeTorsionalOscillation1Selector","ttAmplitudeTorsionalOscillation2Selector","scatterplotSelector","scatterplotBothBogieSelector","scatterplotData1","scatterplotData2","scatterData","mapSlip1Selector","mapSlip2Selector","mapSpeed1Selector","mapSpeed2Selector","mapEffort1Selector","mapEffort2Selector","mapEffortDriving1Selector","mapEffortDriving2Selector","mapEffortBraking1Selector","mapEffortBraking2Selector","mapEffortBrakingMech1Selector","mapEffortBrakingMech2Selector","mapDrivingTrailerVel1Selector","mapEffortReference1Selector","mapEffortReference2Selector","mapSlipPower1Selector","mapSlipPower2Selector","mapPowerBrakingMechanical1Selector","mapPowerBrakingMechanical2Selector","mapAirPressureBrakeCylinder1Selector","mapAirPressureBrakeCylinder2Selector","mapAmplitudeTorsionalOscillation1Selector","mapAmplitudeTorsionalOscillation2Selector","selectTrainViewCommonDetails","selectedTabSelector","selectDetailViewCommonDetails","mapSelector","selectedMainSignalSelector","filterSelector","slip1","slip2","speed1","speed2","effort1","effort2","effortDriving1","effortDriving2","effortBraking1","effortBraking2","effortBrakingMech1","effortBrakingMech2","drivingTrailerVel1","MomentLocalizer","mapStartDate","mapEndDate","xAxisSignalScatter","yAxisSignalScatter","zoomHistory","dateDiffInDays","b","utc1","UTC","getFullYear","getMonth","getDate","utc2","DetailTrainView","getSctterDataBasedonUserSelection","scatterSeletedValue","scatterDropdownDefaultValue","split","result","applyZoomInterval","isApplyZoomEnabled","trainSelect","formatedStartDte","formatedEndDte","currentSamplingType","_args2","toISOString","getSamplingType","_callee3","topdate","totalDays","arr","mapStartDatePrev","mapEndDatePrev","currMonth","currDate","currentDate","_context3","t0","mapSlip1","getDetailViewMap","mapSlip2","mapSpeed1","mapSpeed2","mapEffort1","mapEffort2","mapEffortBrakingMech1","mapEffortBrakingMech2","mapDrivingTrailerVel1","mapEffortReference1","mapEffortReference2","mapSlipPower1","mapSlipPower2","mapPowerBrakingMechanical1","mapPowerBrakingMechanical2","mapAirPressureBrakeCylinder1","mapAirPressureBrakeCylinder2","mapAmplitudeTorsionalOscillation1","mapAmplitudeTorsionalOscillation2","_ref4","_callee4","e","_context4","_x4","changeBasicFilter","currentTargetValue","currentTarget","isNaN","operationValue","toConsumableArray","splice","changeAdvancedFilter","setAdvancedFilter","selectedMainOption","setMainScatterSignal","_ref5","_callee5","_context5","getTimetrendData","scatterplotBothBogieData","getDetailViewMapDateSlider","handleLoading","_x5","timetrendSlip1","timetrendSlip2","timetrendSpeed1","timetrendSpeed2","timetrendEffort1","timetrendEffort2","timetrendEffortBrakingMech1","timetrendEffortBrakingMech2","ttDrivingTrailerVel1","ttEffortReference1","ttEffortReference2","ttSlipPower1","ttSlipPower2","ttPowerBrakingMechanical1","ttPowerBrakingMechanical2","ttAirPressureBrakeCylinder1","ttAirPressureBrakeCylinder2","ttAmplitudeTorsionalOscillation1","ttAmplitudeTorsionalOscillation2","getDateDiff","totaldays","asDays","TotalHours","_this$getDateDiff","samplingType","_ref6","_callee6","start","end","iszoom","iszoomout","previousSamplingType","backDate","_currentSamplingType","_formatedStartDte","_formatedEndDte","_currentSamplingType2","_context6","slice","pop","_x6","_x7","_x8","_x9","selectedSignal","allSignals","filterSignals","bg","signal","_ref7","_callee7","formatedPrevStartDate","formatedPrevEndDate","_context7","_x10","_x11","timetrenddata","selectedSignalsLength","count","SideMenu_SideMenu","SingleGraphPage","filteredScatterData","effortReference1","effortReference2","slipPower1","slipPower2","powerBrakingMechanical1","powerBrakingMechanical2","airPressureBrakeCylinder1","airPressureBrakeCylinder2","amplitudeTorsionalOscillation1","amplitudeTorsionalOscillation2","rsi","graphData","_chartValues","_chartValues2","_chartValues3","_chartValues4","JSON","stringify","tmp","dtv","sdr","top","toa","asb","asa","bogie1","bogie2","confg","confg2","timetrendEffortDriving1","timetrendEffortDriving2","timetrendEffortBraking1","timetrendEffortBraking2","mapEffortDriving1","mapEffortDriving2","mapEffortBraking1","mapEffortBraking2","rows","TrainViewGoogleMap","obj1","index1","TrainViewMap","TrainViewMap_NoDashbordMap","pointFormatter","seriesTwo","borderColor","Graph","showTooltip","num","points","hide","refresh","drawCrosshair","Tooltip","prototype","proceed","charts","nextState","DistanceSelector","DistanceSelector_Handle","FilterDetailsTrainview","TrainView","mapSliderData","saveAs","uri","filename","link","download","body","appendChild","removeChild","takeScreenshot","googleMapsView","querySelector","html2canvas","useCORS","then","canvas","imgData","toDataURL","finalImageSrc","pdf","jsPDF","addImage","save","crosshairPosition","timeTrendData","scatterplotData","onClickGraph","Title_FilterDetailsTrainview","components_TrainViewMap","DistanceSelector_DistanceSelector","Graph_Graph","loadingScatter","TrainViewPage","setLoading","callTimetrendMap","getTrainViewMap","getTrainViewHistogram","TrainViewPage_TrainView","graphValues","loadingHistogram","loginresponceSelector","logincheckSelector","LoginForm","loginResponce","userValid","responseMessage","Group","controlId","Label","Control","handleInputChange","autoComplete","formValues","username","autoFocus","onKeyPress","handleKeyPress","userNameError","password","passwordError","handleLoginClick","LOGIN","LOGIN_SUCCESS","LOGIN_FAILURE","LOGGEDIN","CHANGEPASSWORD","CHANGEPASSWORD_SUCCESS","CHANGEPASSWORD_FAILURE","logInSucess","loginresponce","logInFailure","loggedIn","isloggedIn","changePassSucess","changepassresponce","changePassFailure","LoginPage","isValidEmail","test","logIn","userName","Login_LoginForm","logincheck","openModal","showChangePasswordmodal","textInput","focus","Modal_default","enforceFocus","show","showmodal","onHide","centered","closeButton","Title","changePassResponce","apiResponseMessage","currentpass","currentPassError","newpassword","maxLength","newPassError","repeatepass","repeatenewPassError","Footer","changePasswordClick","Navbar_default","collapseOnSelect","fixed","expand","Brand","redirectToHome","Toggle","aria-controls","Collapse","Nav","Item","Link","handleLogoutClick","HeaderPage","logout","localStorage","changePassword","changePassRemainder","isFirstTimeLogin","match","components_Header_Header","oldpassword","Routes","BrowserRouter","containers_Header","Switch","exact","components_PrivateRoute","DetailTrainPage","formateddate","copyRightYear","VersionInfo","fullVersion","packageJson","buildDate","App","origin","role","Container_default","fluid","router","Footer_VersionInfo","Boolean","hostname","initialState","fromJS","histogramData","mapInitialState","selectedMainMap","trainViewReducer","combineReducers","reducerCommon","action","set","reducerMap","filterAdvanced","timetrendInitialState","timetrendDataSlip1","timetrendDataSlip2","timetrendDataSpeed1","timetrendDataSpeed2","timetrendDataEffort1","timetrendDataEffort2","timetrendDataEffortDriving1","timetrendDataEffortDriving2","timetrendDataEffortBraking1","timetrendDataEffortBraking2","timetrendDataEffortBrakingMech1","timetrendDataEffortBrakingMech2","ttDataDrivingTrailerVel1","ttDataEffortReference1","ttDataEffortReference2","ttDataSlipPower1","ttDataSlipPower2","ttDataPowerBrakingMechanical1","ttDataPowerBrakingMechanical2","ttDataAirPressureBrakeCylinder1","ttDataAirPressureBrakeCylinder2","ttDataAmplitudeTorsionalOscillation1","ttDataAmplitudeTorsionalOscillation2","detailViewReducer","reducerTimetrend","loadingchangepass","reducers","dashboardData","trainViewData","detailViewData","loginData","returnData","axiosResponse","handleError","failedAction","_parseError","parseError","error401","otherError","err","status","Error","jsError","exportedAPI","resourceUrl","baseUrl","apiConfig","baseURL","headers","Content-Type","catchError","response","Promise","reject","api","fetchTrainListData","axios","catch","fetchMapDataList","fetchTrainViewMapData","fetchTrainViewHistogramData","filterToSend","fetchTrainViewGraphData","fetchDetailViewMapData","myDate","fetchDetailViewTimetrendData","fetchDetailViewScatterplotData","fetchDetailViewHistogramData","checkLogin","oldPassword","newPassword","put","fetchDetailViewMapDateSliderData","fetachTrainSaga","fetachingTrainSaga","fetachMapDataSaga","fetachingMapDataSaga","takeLatest","_marked","_action$payload","sent","_marked2","_marked3","_action$payload2","MapData","dc","_marked4","getDetailViewMapSaga","gettingDetailViewMap","getDetailViewMapDateSliderSaga","gettingDetailViewMapDateSlider","getDetailViewTimetrendSaga","gettingDetailViewTimetrend","getDetailViewScatterplotSaga","gettingDetailViewScatterplotSaga","getDetailViewHistogramSaga","gettingDetailViewHistogramSaga","takeEvery","sagas_marked","GraphData","sagas_marked2","sagas_marked3","sagas_marked4","_marked5","_action$payload3","readOnlyError","_marked6","_marked7","_action$payload4","_context8","_marked8","_context9","_marked9","_action$payload5","_context10","_marked10","getTrainViewMapSaga","gettingTrainViewMap","getTrainViewHistogramSaga","gettingTrainViewHistogramSaga","TrainViewPage_sagas_marked","TrainViewPage_sagas_marked2","TrainViewPage_sagas_marked3","TrainViewPage_sagas_marked4","loginSaga","logingInSaga","changePassSaga","changingPassSaga","Login_sagas_marked","checkLoginResponce","encodeURIComponent","Login_sagas_marked2","Login_sagas_marked3","Login_sagas_marked4","rootSaga","all","src_sagas_marked","sagaMiddleware","createSagaMiddleware","store","createStore","composeWithDevTools","applyMiddleware","run","ReactDOM","es","App_App","serviceWorker","ready","registration","unregister"],"mappings":"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MAAc,CACzDD,KAAM8D,GACN7D,YAGW6E,GAAuC,SAAC7E,GAAD,MAAc,CAChED,KAAM+D,GACN9D,YAGW8E,GAAuC,SAAC9E,GAAD,MAAc,CAChED,KAAMgE,GACN/D,YAGW+E,GAAuC,SAAC/E,GAAD,MAAc,CAChED,KAAMiE,GACNhE,YAGWgF,GAAuC,SAAChF,GAAD,MAAc,CAChED,KAAMkE,GACNjE,YAGWiF,GAA2C,SAACjF,GAAD,MAAc,CACpED,KAAMmE,GACNlE,YAGWkF,GAA2C,SAAClF,GAAD,MAAc,CACpED,KAAMoE,GACNnE,YAGWmF,GAA2C,SAACnF,GAAD,MAAc,CACpED,KAAMqE,GACNpE,YAGWoF,GAAyB,SAAChF,GAAD,MAAY,CAChDL,KAAMsE,GACNjE,UAGWiF,GAAoB,SAACrF,GAAD,MAAc,CAC7CD,KAAMuE,GACNtE,YAwDWsF,GAA+B,SAACtF,GAAD,MAAc,CACxDD,KAAMoD,GACNnD,YAGWuF,GAA+B,SAACnF,GAAD,MAAY,CACtDL,KAAMqD,GACNhD,UAGWoF,GAA0B,SAACxF,GAAD,MAAc,CACnDD,KAAMsD,GACNrD,YAGWyF,GAAS,SAACzF,GAAD,MAAc,CAClCD,KAAMuD,GACNtD,YClLW0F,GAAwB,wBACxBC,GAA2B,2BAG3BC,GACX,wCACWC,GACX,wCACWC,GACX,yCACWC,GACX,yCACWC,GACX,0CACWC,GACX,0CACWC,GACX,iDACWC,GACX,iDACWC,GACX,iDACWC,GACX,iDACWC,GACX,qDACWC,GACX,qDACWC,GACX,mCACWC,GAA6B,6BAE7BC,GACX,uCACWC,GACX,qCACWC,GACX,qCACWC,GAA+B,+BAC/BC,GAA+B,+BAC/BC,GACX,4CACWC,GACX,4CACWC,GACX,8CACWC,GACX,8CACWC,GACX,mDACWC,GACX,mDAIWC,GAAqB,qBACrBC,GACX,kCACWC,GACX,kCACWC,GACX,mCACWC,GACX,mCACWC,GACX,oCACWC,GACX,oCACWC,GACX,2CACWC,GACX,2CACWC,GACX,2CACWC,GACX,2CACWC,GACX,+CACWC,GACX,+CAEWC,GACX,uCACWC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","file":"static/js/main.f77ab067.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/home.d7759f7c.svg\";","module.exports = __webpack_public_path__ + \"static/media/subway.74a56ce1.svg\";","module.exports = __webpack_public_path__ + \"static/media/wet.84c47c26.svg\";","module.exports = __webpack_public_path__ + \"static/media/magnet.7219b7d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/generator.12ed102d.svg\";","module.exports = __webpack_public_path__ + \"static/media/abb-logo.39d28159.svg\";","module.exports = __webpack_public_path__ + \"static/media/Google_Train_icon.e47289d9.svg\";","module.exports = __webpack_public_path__ + \"static/media/train.a45ea258.svg\";","module.exports = __webpack_public_path__ + \"static/media/abb_help.19e7c91a.svg\";","module.exports = __webpack_public_path__ + \"static/media/Menu.19dd9d9b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-config.d9f11ccb.svg\";","module.exports = __webpack_public_path__ + \"static/media/feedback.220f292a.svg\";","module.exports = __webpack_public_path__ + \"static/media/help.1fa2064c.svg\";","module.exports = __webpack_public_path__ + \"static/media/goToLink.cd21e692.svg\";","module.exports = __webpack_public_path__ + \"static/media/user.af8e6ccf.svg\";","module.exports = __webpack_public_path__ + \"static/media/logout.870fa93c.svg\";","module.exports = __webpack_public_path__ + \"web.config\";","import CryptoJS from \"crypto-js/crypto-js.js\";\r\n\r\nexport const AESEncrypt = number => {\r\n  const key = CryptoJS.enc.Utf8.parse(\"!QAZ@WSX#EDC1qaz\");\r\n  const iv = CryptoJS.enc.Utf8.parse(\")OKM(IJN&YGV0okn\");\r\n  const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(number), key, {\r\n    keySize: 128 / 8,\r\n    iv: iv,\r\n    mode: CryptoJS.mode.CBC,\r\n    padding: CryptoJS.pad.Pkcs7\r\n  });\r\n  return encrypted.toString();\r\n};\r\n\r\n// temp methods for encrypt and decrypt sesion storage\r\n\r\nexport const SessionStoragedecrypt = ciphertext => {\r\n  if (!ciphertext) {\r\n    return null;\r\n  }\r\n  const key = CryptoJS.enc.Utf8.parse(\"!QAZ@WSX#EDC1qaz\");\r\n  const iv = CryptoJS.enc.Utf8.parse(\")OKM(IJN&YGV0okn\");\r\n  const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {\r\n    keySize: 128 / 8,\r\n    iv: iv,\r\n    mode: CryptoJS.mode.CBC,\r\n    padding: CryptoJS.pad.Pkcs7\r\n  });\r\n  return decrypted.toString(CryptoJS.enc.Utf8);\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Redirect, Route, withRouter } from \"react-router-dom\";\r\nimport { SessionStoragedecrypt } from \"../../containers/Login/aes-encryption\";\r\n\r\nconst PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => (\r\n  <Route\r\n    {...rest}\r\n    render={props =>\r\n      isAuthenticated === true ||\r\n      SessionStoragedecrypt(sessionStorage.getItem(\"token\")) == \"true\" ? (\r\n        <Component {...props} />\r\n      ) : (\r\n        <Redirect\r\n          to={{ pathname: \"/login\", state: { from: props.location } }}\r\n        />\r\n      )\r\n    }\r\n  />\r\n);\r\n\r\nPrivateRoute.propTypes = {\r\n  component: PropTypes.func.isRequired,\r\n  isAuthenticated: PropTypes.bool,\r\n  location: PropTypes.shape()\r\n};\r\n\r\nPrivateRoute.defaultProps = {\r\n  isAuthenticated: false,\r\n  location: {}\r\n};\r\n\r\nexport default withRouter(PrivateRoute);\r\n","/*\r\n * Dashboard Messages\r\n *\r\n * This contains all the text for the Dashboard component.\r\n */\r\nimport { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  header: {\r\n    id: \"app.containers.Dashboard.header\",\r\n    defaultMessage: \"Dashboard\"\r\n  }\r\n});\r\n","import React from 'react';\r\n\r\nrequire('./styles.scss');\r\n\r\nfunction LoadingIndicator() {\r\n  return (\r\n    <div className=\"sk-circle\">\r\n      <div className=\"sk-circle1 sk-child\"></div>\r\n      <div className=\"sk-circle2 sk-child\"></div>\r\n      <div className=\"sk-circle3 sk-child\"></div>\r\n      <div className=\"sk-circle4 sk-child\"></div>\r\n      <div className=\"sk-circle5 sk-child\"></div>\r\n      <div className=\"sk-circle6 sk-child\"></div>\r\n      <div className=\"sk-circle7 sk-child\"></div>\r\n      <div className=\"sk-circle8 sk-child\"></div>\r\n      <div className=\"sk-circle9 sk-child\"></div>\r\n      <div className=\"sk-circle10 sk-child\"></div>\r\n      <div className=\"sk-circle11 sk-child\"></div>\r\n      <div className=\"sk-circle12 sk-child\"></div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default LoadingIndicator;\r\n","/**\r\n *\r\n * Loading\r\n *\r\n */\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LoadingIndicator from '../../components/LoadingIndicator';\r\nrequire('./styles.scss');\r\n// import debug from 'debug';\r\n\r\nfunction Loading(props) {\r\n  // debug('dev')('Loading:props', props);\r\n  return (\r\n    <div className={props.disabled ? 'hidden' : ''}>\r\n      <LoadingIndicator />\r\n    </div>\r\n  );\r\n}\r\nLoading.defaultProps = {\r\n  disabled: false,\r\n};\r\nLoading.propTypes = {\r\n  disabled: PropTypes.bool,\r\n};\r\n\r\nexport default Loading;\r\n","//export const GOOGLE_MAPS_API_KEY = \"\";\r\n//export const GOOGLE_MAPS_API_KEY = \"AIzaSyAEKVqg_a4NBG2w06CITsQV2KU8J9hxQfQ\"; // with lucas account\r\nexport const GOOGLE_MAPS_API_KEY = \"AIzaSyAxWU6jPK4Xte6JnC-R44i1uTHEAPajrMw\"; // with vender account\r\nexport const googleMapURL = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_MAPS_API_KEY}`;\r\n\r\nexport const googleMapCustomStyle = [\r\n  {\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#f5f5f5\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    elementType: \"labels.icon\",\r\n    stylers: [\r\n      {\r\n        visibility: \"off\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#616161\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    elementType: \"labels.text.stroke\",\r\n    stylers: [\r\n      {\r\n        color: \"#f5f5f5\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"administrative.land_parcel\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#bdbdbd\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"poi\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#eeeeee\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"poi\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#757575\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"poi.park\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#e5e5e5\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"poi.park\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#9e9e9e\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#ffffff\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.arterial\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#757575\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.highway\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#dadada\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.highway\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#616161\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.local\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#9e9e9e\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"transit.line\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#e5e5e5\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"transit.station\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#eeeeee\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"water\",\r\n    elementType: \"geometry\",\r\n    stylers: [\r\n      {\r\n        color: \"#c9c9c9\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"water\",\r\n    elementType: \"labels.text.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#9e9e9e\",\r\n      },\r\n    ],\r\n  },\r\n];\r\n","// /*global google*/\r\nimport React, { Component } from \"react\";\r\nimport {\r\n  withScriptjs,\r\n  withGoogleMap,\r\n  GoogleMap,\r\n  Polyline,\r\n  Marker,\r\n} from \"react-google-maps\";\r\nimport PropTypes from \"prop-types\";\r\nimport {\r\n  googleMapURL,\r\n  googleMapCustomStyle,\r\n} from \"../Googlemapkey/dashboardMapConfig\";\r\n\r\nconst DashbordMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      // defaultCenter={\r\n      //   props.mapPath[0].locomotiveRuns[0].data[\r\n      //     Math.round(props.mapPath[0].locomotiveRuns[0].data.length / 2)\r\n      //   ]\r\n      // }\r\n      defaultCenter={{ lat: 46.94809, lng: 7.44744 }}\r\n      disableDefaultUI={true}\r\n      mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n        draggableCursor: \"move\",\r\n      }}\r\n    >\r\n      {props.mapPath.map((object, i) =>\r\n        object.rns.map((routeposition, i) => (\r\n          <Polyline\r\n            key={i}\r\n            path={routeposition.dat}\r\n            onMouseOver={() => props.onHover(routeposition.nm, true)}\r\n            onMouseOut={() => props.onHoverOut()}\r\n            options={{\r\n              strokeColor:\r\n                props.routeSeleted == routeposition.nm\r\n                  ? props.routeColorHover\r\n                  : props.routeColor,\r\n              strokeWeight: 4,\r\n              zIndex: props.routeSeleted == routeposition.nm ? 10 : 1,\r\n            }}\r\n          />\r\n        ))\r\n      )}\r\n    </GoogleMap>\r\n  ))\r\n);\r\n\r\nconst NoDashbordMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      defaultCenter={{ lat: 46.948393, lng: 7.435987 }}\r\n      // mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n      }}\r\n    />\r\n  ))\r\n);\r\n\r\nclass DashboardMap extends Component {\r\n  // constructor(props) {\r\n  //   super(props);\r\n  //   this.state = {\r\n  //     lineColor: \"#fff\",\r\n  //     lineColorHover: \"#6eb0f3\",\r\n  //     lineSeleted: \"\"\r\n  //   };\r\n  // }\r\n\r\n  // onMouseOverEvent = currentLine => {\r\n  //   this.setState({ lineSeleted: currentLine });\r\n  // };\r\n\r\n  // onMouseOutEvent = () => {\r\n  //   this.setState({ lineSeleted: \"\" });\r\n  // };\r\n  excludeInvalidGps = () => {\r\n    let filteredArray = this.props.mapPath\r\n      .filter((element) =>\r\n        element.data.some((subElement) => subElement.gpsValid == 1)\r\n      )\r\n      .map((element) => {\r\n        return Object.assign({}, element, {\r\n          data: element.data.filter((subElement) => subElement.gpsValid == 1),\r\n        });\r\n      });\r\n\r\n    return filteredArray;\r\n  };\r\n\r\n  render() {\r\n    //console.log(\"gps data in map view\", this.excludeInvalidGps());\r\n    return (\r\n      <div>\r\n        {this.props.mapPath !== undefined &&\r\n        this.props.mapPath !== null &&\r\n        this.props.mapPath.length > 0 ? (\r\n          <DashbordMap\r\n            googleMapURL={googleMapURL}\r\n            loadingElement={<div style={{ height: `100%` }} />}\r\n            containerElement={<div style={{ height: `75vh` }} />}\r\n            mapElement={<div style={{ height: `100%` }} />}\r\n            onHover={this.props.onHover}\r\n            onHoverOut={this.props.onHoverOut}\r\n            routeColor={this.props.routeColor}\r\n            routeColorHover={this.props.routeColorHover}\r\n            routeSeleted={this.props.routeSeleted}\r\n            mapPath={\r\n              this.props.mapPath !== undefined && this.props.mapPath !== null\r\n                ? this.props.mapPath\r\n                : \"\"\r\n            }\r\n          />\r\n        ) : (\r\n          <div>\r\n            <NoDashbordMap\r\n              googleMapURL={googleMapURL}\r\n              loadingElement={<div style={{ height: `100%` }} />}\r\n              containerElement={<div style={{ height: `75vh` }} />}\r\n              mapElement={<div style={{ height: `100%` }} />}\r\n            />\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nDashboardMap.defaultProps = {};\r\n\r\nDashboardMap.propTypes = {\r\n  mapPath: PropTypes.any,\r\n};\r\nexport default DashboardMap;\r\n","import React from \"react\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport \"./styles.scss\";\r\n\r\nclass Breadcrumb extends React.Component {\r\n  render() {\r\n    return (\r\n      <Row>\r\n        <Col md={12} className=\"breadcrum-container\">\r\n          <span className=\"pageTitle boldText  float-left\">\r\n            <span>\r\n              <img\r\n                src={require(\"../../assets/images/home.svg\")}\r\n                className={\"\"}\r\n                alt=\"Breadcrumbicon\"\r\n              />\r\n            </span>\r\n            <span className=\"breadcrumbPath\">\r\n              {this.props.BreadcrumbPath.props.defaultMessage.indexOf(\r\n                \"Dashboard/\"\r\n              ) !== -1 ? (\r\n                this.props.BreadcrumbPath.props.defaultMessage.indexOf(\r\n                  \"Dashboard/Train view/\"\r\n                ) !== -1 ? (\r\n                  <span>\r\n                    <NavLink to=\"/Dashboard\" className=\"activebreadcrumb\">\r\n                      {`Dashboard / `}\r\n                    </NavLink>\r\n                    <NavLink to=\"/TrainViewPage\" className=\"activebreadcrumb\">\r\n                      {`Train view / `}\r\n                    </NavLink>\r\n                    Details view\r\n                  </span>\r\n                ) : (\r\n                  <span>\r\n                    <NavLink to=\"/Dashboard\" className=\"activebreadcrumb\">\r\n                      {`Dashboard / `}\r\n                    </NavLink>\r\n                    Train view\r\n                  </span>\r\n                )\r\n              ) : (\r\n                \"Dashboard\"\r\n              )}\r\n            </span>\r\n          </span>\r\n          <span className=\"trainMonitered float-right\">\r\n            <span className=\"boldText\"> {this.props.NumberofTrains} </span>{\" \"}\r\n            trains monitored{\" \"}\r\n          </span>\r\n        </Col>\r\n      </Row>\r\n    );\r\n  }\r\n}\r\n\r\nexport default withRouter(Breadcrumb);\r\n","/**\r\n *\r\n * DateDiffText\r\n *\r\n */\r\n\r\nimport React from \"react\";\r\nimport moment from \"moment\";\r\nimport styles from \"./styles.scss\";\r\n// import debug from 'debug';\r\n\r\nclass DateDiffText extends React.Component {\r\n  // eslint-disable-line react/prefer-stateless-function\r\n\r\n  getDifferenceText = (StartDate, EndDate) => {\r\n    if (StartDate && EndDate) {\r\n      const localStartDate = StartDate;\r\n      const localEndDate = EndDate;\r\n      const diff = moment(localEndDate).diff(moment(localStartDate));\r\n      const d = moment.duration(diff);\r\n\r\n      const days = Math.floor(d.asHours() / 24);\r\n      const hours = Math.floor(d.asHours() - days * 24);\r\n      const minutes = Math.floor(d.asMinutes() - (hours * 60 + days * 24 * 60));\r\n      let msg = days > 0 ? ` ${days} days` : \"\";\r\n      msg += hours > 0 || minutes > 0 ? ` ${hours} hours` : \"\";\r\n      msg += minutes > 0 ? ` ${minutes} minutes` : \"\";\r\n\r\n      if (days < 0 || hours < 0 || minutes < 0) {\r\n        msg = \"\";\r\n      }\r\n      return msg;\r\n    }\r\n\r\n    return \"\";\r\n  };\r\n\r\n  render() {\r\n    const text = this.getDifferenceText(\r\n      this.props.startdate,\r\n      this.props.enddate\r\n    );\r\n    return <span className=\"duration\">{text}</span>;\r\n  }\r\n}\r\n\r\nexport default DateDiffText;\r\n","/*\r\n * TrainView Messages\r\n *\r\n * This contains all the text for the TrainView component.\r\n */\r\nimport { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  problem: {\r\n    id: \"app.components.datepicker.problem\",\r\n    defaultMessage: \"Invalid date & time range!\"\r\n  }\r\n});\r\n","import React from \"react\";\r\nimport { injectIntl, intlShape, FormattedMessage } from \"react-intl\";\r\nimport Moment from \"moment\";\r\nimport momentLocalizer from \"react-widgets-moment\";\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\nimport DateDiffText from \"../DateDiffText\";\r\nimport DateTimePicker from \"react-widgets/lib/DateTimePicker\";\r\nimport \"react-widgets/dist/css/react-widgets.css\";\r\nimport \"./styles.scss\";\r\nimport messages from \"./messages\";\r\n\r\nMoment.locale(\"en\");\r\nmomentLocalizer();\r\n\r\nexport default class Datepicker extends React.Component {\r\n  constructor(...args) {\r\n    super(...args);\r\n    this.state = {\r\n      startDate: null,\r\n      endDate: null\r\n    };\r\n  }\r\n\r\n  componentDidMount() {\r\n    this.state.startDate =\r\n      this.state.startDate != null\r\n        ? new Date(this.state.startDate)\r\n        : new Date(this.props.startDate.replace(/%3A/g, \":\"));\r\n    this.state.endDate =\r\n      this.state.endDate != null\r\n        ? new Date(this.state.endDate)\r\n        : new Date(this.props.endDate.replace(/%3A/g, \":\"));\r\n  }\r\n\r\n  handleDatePickerChange = (name, value) => {\r\n    this.setState({ [name]: value });\r\n  };\r\n\r\n  checkDateValidation = () => {\r\n    // check the dates\r\n    const diff = Moment(this.state.endDate).diff(Moment(this.state.startDate));\r\n    const d = Moment.duration(diff);\r\n\r\n    const days = Math.floor(d.asHours() / 24);\r\n    const hours = Math.floor(d.asHours() - days * 24);\r\n    const minutes = Math.floor(d.asMinutes() - (hours * 60 + days * 24 * 60));\r\n    let msg = days > 0 ? ` ${days} days` : \"\";\r\n    msg += hours > 0 || minutes > 0 ? ` ${hours} hours` : \"\";\r\n    msg += minutes > 0 ? ` ${minutes} minutes` : \"\";\r\n\r\n    if (days === 0 && hours === 0 && minutes === 0) {\r\n      return false;\r\n    } else if (days < 0 || hours < 0 || minutes < 0) {\r\n      return false;\r\n    } else if (days > 90) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  };\r\n\r\n  render() {\r\n    const isValid = this.checkDateValidation();\r\n    return (\r\n      <Row className=\"datePickerContainer\">\r\n        <Col\r\n          xs={12}\r\n          sm={12}\r\n          md={3}\r\n          className=\"selectmonitoringrange noLeftpadding noRightpadding boldText\"\r\n        >\r\n          Select monitoring period\r\n        </Col>\r\n        <Col xs={12} sm={6} md={3} className=\"datePickerTextbox\">\r\n          <DateTimePicker\r\n            //step={5}\r\n            max={\r\n              new Date(\r\n                Moment()\r\n                  .subtract(1, \"days\")\r\n                  .endOf(\"day\")\r\n              )\r\n            }\r\n            // min={new Date(Moment().subtract(91, \"days\"))}\r\n            format={\"DD.MM.YYYY, HH:mm\"}\r\n            timeFormat={\"HH:mm\"}\r\n            //defaultValue={new Date(this.props.startDate.replace(/%3A/g, \":\"))}\r\n            value={\r\n              this.state.startDate != null\r\n                ? new Date(this.state.startDate)\r\n                : new Date(this.props.startDate.replace(/%3A/g, \":\"))\r\n            }\r\n            onChange={value => this.handleDatePickerChange(\"startDate\", value)}\r\n            inputProps={{\r\n              component: props => <input {...props} readOnly />\r\n            }}\r\n          />\r\n          <div className=\"error-message-time\">\r\n            {!isValid ? <FormattedMessage {...messages.problem} /> : \"\"}\r\n          </div>\r\n        </Col>\r\n        To\r\n        <Col\r\n          xs={12}\r\n          sm={6}\r\n          md={3}\r\n          className=\" noRightpadding datePickerTextbox\"\r\n        >\r\n          <DateTimePicker\r\n            //step={10}\r\n            // min={new Date(Moment().subtract(91, \"days\"))}\r\n            max={\r\n              new Date(\r\n                Moment()\r\n                  .subtract(1, \"days\")\r\n                  .endOf(\"day\")\r\n              )\r\n            }\r\n            format={\"DD.MM.YYYY, HH:mm\"}\r\n            timeFormat={\"HH:mm\"}\r\n            //defaultValue={new Date(this.props.endDate.replace(/%3A/g, \":\"))}\r\n\r\n            value={\r\n              this.state.endDate != null\r\n                ? new Date(this.state.endDate)\r\n                : new Date(this.props.endDate.replace(/%3A/g, \":\"))\r\n            }\r\n            onChange={value => this.handleDatePickerChange(\"endDate\", value)}\r\n            inputProps={{\r\n              component: props => <input {...props} readOnly />\r\n            }}\r\n          />\r\n        </Col>\r\n        <Col\r\n          xs={12}\r\n          sm={12}\r\n          md={3}\r\n          className=\" datediff  noRightpadding boldText\"\r\n        >\r\n          <DateDiffText\r\n            startdate={\r\n              this.state.startDate != null\r\n                ? this.state.startDate\r\n                : this.props.startDate.replace(/%3A/g, \":\")\r\n            }\r\n            enddate={\r\n              this.state.endDate != null\r\n                ? this.state.endDate\r\n                : this.props.endDate.replace(/%3A/g, \":\")\r\n            }\r\n          />\r\n          <Button\r\n            className=\"smallButton\"\r\n            variant=\"primary\"\r\n            size=\"sm\"\r\n            onClick={() =>\r\n              this.props.onApplyClick(this.state.startDate, this.state.endDate)\r\n            }\r\n            disabled={!isValid}\r\n          >\r\n            Apply\r\n          </Button>\r\n        </Col>\r\n      </Row>\r\n    );\r\n  }\r\n}\r\n","export const FETCH_MAP_DATA = \"FETCH_MAP_DATA\";\r\nexport const FETCH_MAP_DATA_SUCCESS = \"FETCH_MAP_DATA_SUCCESS\";\r\nexport const FETCH_MAP_DATA_FAILURE = \"FETCH_MAP_DATA_FAILURE\";\r\n\r\nexport const FETCH_TRAIN_LIST = \"FETCH_TRAIN_LIST\";\r\nexport const FETCH_TRAIN_LIST_SUCCESS = \"FETCH_TRAIN_LIST_SUCCESS\";\r\nexport const FETCH_TRAIN_LIST_FAILURE = \"FETCH_TRAIN_LIST_FAILURE\";\r\n\r\nexport const SET_CURRENT_TRAIN = \"SET_CURRENT_TRAIN\";\r\nexport const SET_DATE = \"SET_DATE\";\r\n","import {\r\n  FETCH_MAP_DATA,\r\n  FETCH_MAP_DATA_SUCCESS,\r\n  FETCH_MAP_DATA_FAILURE,\r\n  FETCH_TRAIN_LIST,\r\n  FETCH_TRAIN_LIST_SUCCESS,\r\n  FETCH_TRAIN_LIST_FAILURE,\r\n  SET_CURRENT_TRAIN,\r\n  SET_DATE\r\n} from \"./constants\";\r\n\r\n//Map\r\nexport const fetchMapData = (startDate, endDate) => ({\r\n  type: FETCH_MAP_DATA,\r\n  payload: { startDate, endDate }\r\n});\r\n\r\nexport const fetchMapDataSucess = Mapdata => ({\r\n  type: FETCH_MAP_DATA_SUCCESS,\r\n  Mapdata\r\n});\r\n\r\nexport const fetchMapDataFailure = error => ({\r\n  type: FETCH_MAP_DATA_FAILURE,\r\n  error\r\n});\r\n\r\n//TrainList\r\nexport const fetchTrainList = (startDate, endDate) => ({\r\n  type: FETCH_TRAIN_LIST,\r\n  payload: { startDate, endDate }\r\n});\r\n\r\nexport const fetchTrainListSucess = TrainList => ({\r\n  type: FETCH_TRAIN_LIST_SUCCESS,\r\n  TrainList\r\n});\r\n\r\nexport const fetchTrainListFailure = error => ({\r\n  type: FETCH_TRAIN_LIST_FAILURE,\r\n  error\r\n});\r\n\r\nexport const setSelectedTrain = trainName => ({\r\n  type: SET_CURRENT_TRAIN,\r\n  trainName\r\n});\r\n\r\nexport const setDate = (startDate, endDate) => ({\r\n  type: SET_DATE,\r\n  payload: { startDate, endDate }\r\n});\r\n","import { createSelector } from \"reselect\";\r\nimport Moment from \"moment\";\r\n\r\nconst dashboardData = () => state => state.get(\"dashboardData\");\r\n\r\nconst loadingSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => state.get(\"loading\")\r\n  );\r\n\r\nconst loadingMapSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => state.get(\"loadingMap\")\r\n  );\r\n\r\nconst selectedTrainSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => state.get(\"selectedTrain\")\r\n  );\r\n\r\nconst mapDataSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => state.get(\"mapData\")\r\n  );\r\n\r\nconst fleetDataSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => state.get(\"fleetData\")\r\n  );\r\n\r\nconst startDateSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => {\r\n      let startDate = state.get(\"startDate\");\r\n      let formatedStartDate = null;\r\n      if (startDate != null) {\r\n        formatedStartDate = Moment(startDate)\r\n          .format(\"YYYY-MM-DDTHH:mm:ss\")\r\n          .replace(/:/g, \"%3A\");\r\n      }\r\n      return formatedStartDate;\r\n    }\r\n  );\r\n\r\nconst endDateSelector = () =>\r\n  createSelector(\r\n    dashboardData(),\r\n    state => {\r\n      let endDate = state.get(\"endDate\");\r\n      let formatedEndDate = null;\r\n      if (endDate != null) {\r\n        formatedEndDate = Moment(endDate)\r\n          .format(\"YYYY-MM-DDTHH:mm:ss\")\r\n          .replace(/:/g, \"%3A\");\r\n      }\r\n      return formatedEndDate;\r\n    }\r\n  );\r\n\r\n// const bretonlySelector = () => createSelector(\r\n//   trainListSelector,\r\n//   tabledata => {\r\n//     console.log(\"hooo\", tabledata.fleetData);\r\n\r\n//     const arr = tabledata.fleetData;\r\n//     if (arr) {\r\n//       var filteredValue = arr.filter(function(item) {\r\n//         return item.username === \"Bret\";\r\n//       });\r\n\r\n//       console.log(\"wowoo\", filteredValue);\r\n//     }\r\n//   }\r\n// );\r\n\r\nexport {\r\n  loadingSelector,\r\n  startDateSelector,\r\n  endDateSelector,\r\n  selectedTrainSelector,\r\n  mapDataSelector,\r\n  fleetDataSelector,\r\n  loadingMapSelector\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst IconFault = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-fault\">\r\n        <circle\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill}\r\n          cx=\"24\"\r\n          cy=\"23\"\r\n          r=\"17\"\r\n        />\r\n        <circle id=\"Oval-2\" fill=\"#FFFFFF\" cx=\"24\" cy=\"34\" r=\"3\" />\r\n        <rect\r\n          id=\"Rectangle-4\"\r\n          fill=\"#FFFFFF\"\r\n          x=\"22\"\r\n          y=\"10\"\r\n          width=\"4\"\r\n          height=\"18\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconFault.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconTemperature = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-temperature\">\r\n        <path\r\n          d=\"M28,9 C28,9 28,5 24.5,5 C21,5 21,9 21,9 L21,26.7517393 C18.0514749,28.0857287 16,31.0532905 16,34.5 C16,39.1944204 19.8055796,43 24.5,43 C29.1944204,43 33,39.1944204 33,34.5 C33,31.0532905 30.9485251,28.0857287 28,26.7517393 L28,9 Z\"\r\n          id=\"Combined-Shape\"\r\n          fill=\"#FFFFFF\"\r\n        />\r\n        <path\r\n          d=\"M19,17 L17,17 L17,15 L19,15 L19,12 L17,12 L17,10 L19,10 L19,9 C19,8.24854444 19.1458847,7.24819241 19.6051853,6.19836233 C20.4507694,4.26559875 22.1118678,3 24.5,3 C26.8881322,3 28.5492306,4.26559875 29.3948147,6.19836233 C29.8541153,7.24819241 30,8.24854444 30,9 L30,25.553744 C33.0585664,27.4350275 35,30.7909414 35,34.5 C35,40.2989899 30.2989899,45 24.5,45 C18.7010101,45 14,40.2989899 14,34.5 C14,30.7909414 15.9414336,27.4350275 19,25.553744 L19,22 L17,22 L17,20 L19,20 L19,17 Z M28,9 C28,9 28,5 24.5,5 C21,5 21,9 21,9 L21,26.7517393 C18.0514749,28.0857287 16,31.0532905 16,34.5 C16,39.1944204 19.8055796,43 24.5,43 C29.1944204,43 33,39.1944204 33,34.5 C33,31.0532905 30.9485251,28.0857287 28,26.7517393 L28,9 Z\"\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n        />\r\n        <path\r\n          d=\"M23,28.1739318 C20.1333,28.8510956 18,31.4264184 18,34.5 C18,38.0898509 20.9101491,41 24.5,41 C28.0898509,41 31,38.0898509 31,34.5 C31,31.4264184 28.8667,28.8510956 26,28.1739318 L26,18 L23,18 L23,28.1739318 Z\"\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconTemperature.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconAvailability = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <path\r\n        d=\"M28,26.7517393 C30.9485251,28.0857287 33,31.0532905 33,34.5 C33,39.1944204 29.1944204,43 24.5,43 C19.8055796,43 16,39.1944204 16,34.5 C16,31.0532905 18.0514749,28.0857287 21,26.7517393 L21,9 C21,9 21,5 24.5,5 C28,5 28,9 28,9 L28,26.7517393 Z\"\r\n        id=\"path-ava\"\r\n      />\r\n      <mask\r\n        id=\"mask-ava\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"-2\"\r\n        y=\"-2\"\r\n        width=\"21\"\r\n        height=\"42\"\r\n      >\r\n        <rect x=\"14\" y=\"3\" width=\"21\" height=\"42\" fill=\"white\" />\r\n        <use xlinkHref=\"#path-ava\" fill=\"black\" />\r\n      </mask>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-availability\">\r\n        <use\r\n          id=\"Combined-Shape\"\r\n          stroke={props.fill}\r\n          mask=\"url(#mask-ava)\"\r\n          strokeWidth=\"4\"\r\n          xlinkHref=\"#path-ava\"\r\n        />\r\n        <rect\r\n          id=\"Rectangle-3\"\r\n          fill={props.fill}\r\n          x=\"17\"\r\n          y=\"20\"\r\n          width=\"4\"\r\n          height=\"2\"\r\n        />\r\n        <rect\r\n          id=\"Rectangle-3\"\r\n          fill={props.fill}\r\n          x=\"17\"\r\n          y=\"10\"\r\n          width=\"4\"\r\n          height=\"2\"\r\n        />\r\n        <rect\r\n          id=\"Rectangle-3\"\r\n          fill={props.fill}\r\n          x=\"17\"\r\n          y=\"15\"\r\n          width=\"4\"\r\n          height=\"2\"\r\n        />\r\n        <circle id=\"Oval-2\" fill={props.fill} cx=\"24.5\" cy=\"34.5\" r=\"6.5\" />\r\n        <rect\r\n          id=\"Rectangle-2\"\r\n          fill={props.fill}\r\n          x=\"23\"\r\n          y=\"18\"\r\n          width=\"3\"\r\n          height=\"13\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconAvailability.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconStress = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-stress\">\r\n        <polygon id=\"Path\" fill=\"#FFFFFF\" points=\"7 41 41 41 41 7 7 7\" />\r\n        <path\r\n          d=\"M8,40 L8.006,23 L15.281,23 L19.06,33.342 C19.401,34.279 20.754,34.194 20.975,33.222 L25.156,14.938 L29.046,27.298 C29.303,28.122 30.413,28.255 30.857,27.514 L33.594,23 L40,23 L40,40 L8,40 Z M40,8 L40,21 L33,21 C32.649,21 32.323,21.184 32.143,21.485 L30.312,24.562 L25.954,10.702 C25.65,9.727 24.251,9.782 24.025,10.778 L19.781,29.406 L16.94,21.658 C16.796,21.263 16.421,21 16,21 L8.007,21 L8.012,8.012 L40,8 Z M6,42 L42,42 L42,6 L6,6 L6,42 Z\"\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill}\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconStress.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconReliability = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-reliability\">\r\n        <circle id=\"Combined-Shape\" fill=\"#FFFFFF\" cx=\"24\" cy=\"23\" r=\"16\" />\r\n        <path\r\n          d=\"M24,39 C32.836556,39 40,31.836556 40,23 C40,14.163444 32.836556,7 24,7 C15.163444,7 8,14.163444 8,23 C8,31.836556 15.163444,39 24,39 Z M24,41 C14.0588745,41 6,32.9411255 6,23 C6,13.0588745 14.0588745,5 24,5 C33.9411255,5 42,13.0588745 42,23 C42,32.9411255 33.9411255,41 24,41 Z\"\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill}\r\n          fillRule=\"nonzero\"\r\n        />\r\n        <path\r\n          d=\"M24,36 C31.1797017,36 37,30.1797017 37,23 L24,23 L24,10 C16.8202983,10 11,15.8202983 11,23 C11,30.1797017 16.8202983,36 24,36 Z\"\r\n          id=\"fill-Combined-Shape\"\r\n          fill={props.fill}\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconReliability.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconCalendar = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 24 24\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-commonux-calendar\" fill={props.fill ? props.fill : \"#464646\"}>\r\n        <g id=\"commonux-calendar-16\" transform=\"translate(5.000000, 5.000000)\">\r\n          <g id=\"CommonUX_Calendar_16\">\r\n            <path\r\n              d=\"M12,1 L12,0 L9,0 L9,1 L5,1 L5,0 L2,0 L2,1 L0,1 L0,15 L14,15 L14,1 L12,1 Z M10,1 L11,1 L11,3 L10,3 L10,1 Z M3,1 L4,1 L4,3 L3,3 L3,1 Z M13,14 L1,14 L1,5 L13,5 L13,14 Z M5,9 L3,9 L3,7 L5,7 L5,9 Z M8,9 L6,9 L6,7 L8,7 L8,9 Z M11,9 L9,9 L9,7 L11,7 L11,9 Z M8,12 L6,12 L6,10 L8,10 L8,12 Z M5,12 L3,12 L3,10 L5,10 L5,12 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconCalendar.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconFilter = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <polygon id=\"123path-1\" points=\"0 0 9 11 9 25 17 19 17 11 26 0\" />\r\n      <mask\r\n        id=\"123mask-2\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"26\"\r\n        height=\"25\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#123path-1\" />\r\n      </mask>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-commonux-filter\" stroke={props.fill ? props.fill : \"#3C3C3C\"}>\r\n        <g id=\"commonux-filter-16\" transform=\"translate(3.000000, 3.500000)\">\r\n          <g id=\"CommonUX_Filter_16\">\r\n            <use\r\n              id=\"Shape\"\r\n              mask=\"url(#123mask-2)\"\r\n              strokeWidth=\"4\"\r\n              xlinkHref=\"#123path-1\"\r\n            />\r\n            <path\r\n              d=\"M10.5,11 L15.5,11\"\r\n              id=\"Line\"\r\n              strokeWidth=\"2\"\r\n              strokeLinecap=\"square\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconFilter.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconClose = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"32\"}\r\n    height={props.height ? props.height : \"32\"}\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs />\r\n    <g\r\n      id=\"Icons\"\r\n      stroke=\"none\"\r\n      strokeWidth=\"1\"\r\n      fill=\"none\"\r\n      fillRule=\"evenodd\"\r\n      strokeLinecap=\"square\"\r\n    >\r\n      <g id=\"icon-commonux-close-idle\" strokeWidth=\"2\" stroke=\"#3C3C3C\">\r\n        <g id=\"commonux-close-16\" transform=\"translate(6.000000, 6.000000)\">\r\n          <g id=\"CommonUX_Close_16\">\r\n            <g id=\"Group-2\">\r\n              <path d=\"M0.5,0.5 L19.5,19.5\" id=\"Line\" />\r\n              <path d=\"M0.5,19.5 L19.5,0.5\" id=\"Line\" />\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconClose.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconHome = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"36\"}\r\n    height={props.height ? props.height : \"36\"}\r\n    viewBox=\"0 0 36 36\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g\r\n      id=\"icon-home-top\"\r\n      stroke=\"none\"\r\n      strokeWidth=\"1\"\r\n      fill=\"none\"\r\n      fillRule=\"evenodd\"\r\n    >\r\n      <g\r\n        id=\"icon-home-middle\"\r\n        strokeWidth=\"2\"\r\n        stroke={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <polygon\r\n          id=\"Fill-1\"\r\n          points=\"25 28 19 28 19 21 13 21 13 28 7 28 7 18 4 18 16 4 28 18 25 18\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconHome.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconMultiSignal = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"32\"}\r\n    height={props.height ? props.height : \"32\"}\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <rect id=\"11path-1\" x=\"0\" y=\"0\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-2\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#11path-1\" />\r\n      </mask>\r\n      <rect id=\"22path-3\" x=\"10\" y=\"0\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-4\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#22path-3\" />\r\n      </mask>\r\n      <rect id=\"33path-5\" x=\"20\" y=\"0\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-6\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#33path-5\" />\r\n      </mask>\r\n      <rect id=\"44path-7\" x=\"0\" y=\"8\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-8\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#44path-7\" />\r\n      </mask>\r\n      <rect id=\"55path-9\" x=\"10\" y=\"8\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-10\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#55path-9\" />\r\n      </mask>\r\n      <rect id=\"66path-11\" x=\"20\" y=\"8\" width=\"8\" height=\"6\" />\r\n      <mask\r\n        id=\"mask-12\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"8\"\r\n        height=\"6\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#66path-11\" />\r\n      </mask>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-multi-signal-idle\" stroke=\"#3C3C3C\" strokeWidth=\"4\">\r\n        <g id=\"Group-2\" transform=\"translate(2.000000, 9.000000)\">\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-2)\" xlinkHref=\"#11path-1\" />\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-4)\" xlinkHref=\"#22path-3\" />\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-6)\" xlinkHref=\"#33path-5\" />\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-8)\" xlinkHref=\"#44path-7\" />\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-10)\" xlinkHref=\"#55path-9\" />\r\n          <use id=\"Rectangle-61\" mask=\"url(#mask-12)\" xlinkHref=\"#66path-11\" />\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconMultiSignal.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconAlarm = props => (\r\n  <svg\r\n    width={props.width ? `${props.width}px` : \"48px\"}\r\n    height={props.height ? `${props.height}px` : \"48px\"}\r\n    viewBox={\r\n      props.width && props.height\r\n        ? `0 0 ${props.width} ${props.height}`\r\n        : \"0 0 48 48\"\r\n    }\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"Icon-email-alarm-dark\" fill={props.fill ? props.fill : \"#3C3C3C\"}>\r\n        <g\r\n          id=\"commonux-alarmbell-16\"\r\n          transform=\"translate(11.500000, 8.000000)\"\r\n        >\r\n          <g id=\"CommonUX_AlarmBell_16\">\r\n            <path\r\n              d=\"M16.5,28 C16.5,30.209139 14.709139,32 12.5,32 C10.290861,32 8.5,30.209139 8.5,28 L16.5,28 Z M22.5,18 C22.5,12.44 20.68,5.56 14.5,4.22 L14.5,2 C14.5,0.8954305 13.6045695,6.76353751e-17 12.5,0 C11.3954305,-6.76353751e-17 10.5,0.8954305 10.5,2 L10.5,4.22 C4.32,5.56 2.5,12.44 2.5,18 C2.5,21.66 0.5,22 0.5,22 L0.5,26 L24.5,26 L24.5,22 C24.5,22 22.5,21.66 22.5,18 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconAlarm.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconReport = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g\r\n        id=\"icon-commonux-report-dark\"\r\n        fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <g\r\n          id=\"commonux-newdocument-16\"\r\n          transform=\"translate(8.000000, 8.000000)\"\r\n        >\r\n          <g id=\"CommonUX_NewDocument_16\">\r\n            <path\r\n              d=\"M23,14 C18.0294373,14 14,18.0294373 14,23 C14,27.9705627 18.0294373,32 23,32 C27.9705627,32 32,27.9705627 32,23 C32,20.6130516 31.0517884,18.3238664 29.363961,16.636039 C27.6761336,14.9482116 25.3869484,14 23,14 L23,14 Z M28,24 L24,24 L24,28 L22,28 L22,24 L18,24 L18,22 L22,22 L22,18 L24,18 L24,22 L28,22 L28,24 Z\"\r\n              id=\"Shape\"\r\n            />\r\n            <path\r\n              d=\"M16,10 L8,10 L8,8 L16,8 L16,10 Z M13.26,16 L8,16 L8,18 L12.1,18 C12.4213919,17.2975507 12.8098612,16.6277761 13.26,16 L13.26,16 Z M18.22,12 L8,12 L8,14 L15.08,14 C16.0162515,13.1740465 17.0756643,12.4992612 18.22,12 Z M12.1,28 L4,28 L4,4 L16.6,4 L24,10 L24,11.12 C25.3846549,11.2390405 26.7381074,11.5977054 28,12.18 L28,8 L18,0 L0,0 L0,32 L15.08,32 C13.8174601,30.8901124 12.802197,29.5273431 12.1,28 L12.1,28 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconReport.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconAnalysis = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-analysis-dark\">\r\n        <g id=\"commonux-document-16\" transform=\"translate(12.000000, 9.000000)\">\r\n          <g id=\"CommonUX_Document_16\" />\r\n        </g>\r\n        <g\r\n          id=\"commonux-document-16\"\r\n          transform=\"translate(10.000000, 8.000000)\"\r\n          fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n        >\r\n          <g id=\"CommonUX_Document_16\">\r\n            <path\r\n              d=\"M16.6,4 L24,10 L24,28 L4,28 L4,4 L16.6,4 L16.6,4 Z M18,0 L0,0 L0,32 L28,32 L28,8 L18,0 Z M20,14 L8,14 L8,16 L20,16 L20,14 Z M20,18 L8,18 L8,20 L20,20 L20,18 Z M16,10 L8,10 L8,12 L16,12 L16,10 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconAnalysis.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconEdit = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g\r\n        id=\"icon-commonux-edit-dark\"\r\n        fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <g id=\"commonux-edit-16\" transform=\"translate(16.000000, 16.000000)\">\r\n          <g id=\"CommonUX_Edit_16\">\r\n            <path\r\n              d=\"M13.8971429,5.47428571 L10.5257143,2.10285714 L12.6285714,8.8817842e-16 L16,3.37142857 L13.8971429,5.47428571 Z M9.26857143,3.37142857 L1.68,10.9485714 L0,16 L5.05142857,14.32 L12.6285714,6.74285714 L9.26857143,3.37142857 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconEdit.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconDone = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-done-dark\" fill={props.fill ? props.fill : \"#464646\"}>\r\n        <g\r\n          id=\"commonux-checkmark-16\"\r\n          transform=\"translate(12.000000, 14.000000)\"\r\n        >\r\n          <g id=\"CommonUX_CheckMark_16\">\r\n            <polygon\r\n              id=\"Shape\"\r\n              points=\"9.02 19 0.16 10.32 3.66 6.74 9 11.98 20.38 0.74 23.9 4.3\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconDone.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst AbbLogo = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"105.43\"}\r\n    height={props.height ? props.height : \"41.38\"}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 105.43 41.38\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#ed2024\"\r\n          d=\"M19.84,33.08H13.24l-2.9,8.3H0L6.93,21.54h12.9Zm0-13.24H7.5L14.49,0h5.34ZM21.54,0h5.34l7,19.84H21.54ZM41.38,41.38H31l-2.9-8.3H21.54V21.54h12.9Z\"\r\n        />\r\n        <path\r\n          fill=\"#ed2024\"\r\n          d=\"M44.22,19.84V0H55.81V19.84Zm11.59,1.71V41.38H44.22V21.54Zm1.71-1.71V0H60.8a8.92,8.92,0,0,1,6.56,2.73,9,9,0,0,1,2.72,6.59,8.82,8.82,0,0,1-4.72,8.13,12.7,12.7,0,0,1,3.86,2.39ZM73.21,29A12.16,12.16,0,0,1,60.8,41.38H57.52V21.54h13.2A12.19,12.19,0,0,1,73.21,29Z\"\r\n        />\r\n        <path\r\n          fill=\"#ed2024\"\r\n          d=\"M76.45,19.84V0H88V19.84ZM88,21.54V41.38H76.45V21.54Zm1.71-1.71V0H93a8.92,8.92,0,0,1,6.56,2.73,9,9,0,0,1,2.72,6.59,8.82,8.82,0,0,1-4.72,8.13,12.7,12.7,0,0,1,3.86,2.39ZM105.43,29A12.16,12.16,0,0,1,93,41.38H89.75V21.54h13.2A12.19,12.19,0,0,1,105.43,29Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nAbbLogo.propTypes = {\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconOptions = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n        <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\" />\r\n        <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\" />\r\n      </linearGradient>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g\r\n        id=\"icon-desktop-options-idle\"\r\n        fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <path\r\n          d=\"M38,21 L38,27 L32,27 L32,21 L38,21 Z M27,21 L27,27 L21,27 L21,21 L27,21 Z M16,21 L16,27 L10,27 L10,21 L16,21 Z\"\r\n          id=\"…\"\r\n          transform=\"translate(24.000000, 24.000000) scale(-1, -1) rotate(90.000000) translate(-24.000000, -24.000000) \"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconOptions.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconCollapseButton = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"48\"}\r\n    height={props.height ? props.height : \"48\"}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n        <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\" />\r\n        <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\" />\r\n      </linearGradient>\r\n    </defs>\r\n    <g\r\n      id=\"Icons\"\r\n      stroke=\"none\"\r\n      strokeWidth=\"1\"\r\n      fill=\"none\"\r\n      fillRule=\"evenodd\"\r\n      strokeLinecap=\"square\"\r\n    >\r\n      <g id=\"icon-desktop-options-idle\" stroke=\"#3C3C3C\" strokeWidth=\"2\">\r\n        <g id=\"Group-2\" transform=\"translate(12.000000, 14.000000)\">\r\n          <path d=\"M23.5,9 L0.5,9\" id=\"Line\" />\r\n          <path d=\"M23.5,1 L0.5,1\" id=\"Line\" />\r\n          <path d=\"M23.5,17 L0.5,17\" id=\"Line\" />\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconCollapseButton.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconDownCaret = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"16\"}\r\n    height={props.height ? props.height : \"16\"}\r\n    viewBox=\"0 0 16 16\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-commonux-down\" fillRule=\"nonzero\" fill=\"#3C3C3C\">\r\n        <polygon\r\n          id=\"Shape\"\r\n          points=\"3.41 4.295 8 8.875 12.59 4.295 14 5.705 8 11.705 2 5.705\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconDownCaret.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconAddFile = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g\r\n        id=\"icon-commonux-report-dark\"\r\n        fill={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <g\r\n          id=\"commonux-newdocument-16\"\r\n          transform=\"translate(8.000000, 8.000000)\"\r\n        >\r\n          <g id=\"CommonUX_NewDocument_16\">\r\n            <path\r\n              d=\"M23,14 C18.0294373,14 14,18.0294373 14,23 C14,27.9705627 18.0294373,32 23,32 C27.9705627,32 32,27.9705627 32,23 C32,20.6130516 31.0517884,18.3238664 29.363961,16.636039 C27.6761336,14.9482116 25.3869484,14 23,14 L23,14 Z M28,24 L24,24 L24,28 L22,28 L22,24 L18,24 L18,22 L22,22 L22,18 L24,18 L24,22 L28,22 L28,24 Z\"\r\n              id=\"Shape\"\r\n            />\r\n            <path\r\n              d=\"M16,10 L8,10 L8,8 L16,8 L16,10 Z M13.26,16 L8,16 L8,18 L12.1,18 C12.4213919,17.2975507 12.8098612,16.6277761 13.26,16 L13.26,16 Z M18.22,12 L8,12 L8,14 L15.08,14 C16.0162515,13.1740465 17.0756643,12.4992612 18.22,12 Z M12.1,28 L4,28 L4,4 L16.6,4 L24,10 L24,11.12 C25.3846549,11.2390405 26.7381074,11.5977054 28,12.18 L28,8 L18,0 L0,0 L0,32 L15.08,32 C13.8174601,30.8901124 12.802197,29.5273431 12.1,28 L12.1,28 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconAddFile.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconAsc = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 18.14 19.48\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <style>\r\n        .cls-1{\"{fill:#398fb6;}\"}\r\n        .cls-2{\"{fill:#727272;}\"}\r\n        .cls-3{\"{fill:#3697d3;}\"}\r\n      </style>\r\n    </defs>\r\n    <title>icon-sort-up</title>\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M10.57,17.84a.66.66,0,0,0-.66-.66H.66a.66.66,0,0,0-.66.66v.66a.66.66,0,0,0,.66.66H9.9a.66.66,0,0,0,.66-.66v-.66Zm0,0\"\r\n        />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M8.66,15a.66.66,0,0,0,.66-.66v-.66A.66.66,0,0,0,8.66,13h-8a.66.66,0,0,0-.66.66v.66A.66.66,0,0,0,.66,15Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M8.66,4.18\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M7.41,10.81a.66.66,0,0,0,.66-.66V9.48a.66.66,0,0,0-.66-.66H.66A.66.66,0,0,0,0,9.48v.66a.66.66,0,0,0,.66.66Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M7.41,8.35\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M6.17,6.17a.66.66,0,0,0,.66-.66V4.84a.66.66,0,0,0-.66-.66H.66A.66.66,0,0,0,0,4.84V5.5a.66.66,0,0,0,.66.66Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M6.17,13\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M4.92,2a.66.66,0,0,0,.66-.66V.66A.66.66,0,0,0,4.92,0H.66A.66.66,0,0,0,0,.66v.66A.66.66,0,0,0,.66,2Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M4.92,2\" />\r\n        <path className=\"cls-2\" d=\"M19.78,14.13\" />\r\n        <path\r\n          className=\"cls-3\"\r\n          d=\"M8.58,5.68,9,6.14a.66.66,0,0,0,.94,0l2.28-2.28V18.81a.66.66,0,0,0,.66.66h.66a.66.66,0,0,0,.66-.66V3.86l2.28,2.28a.66.66,0,0,0,.94,0l.47-.47a.66.66,0,0,0,0-.94L13.73.53a.66.66,0,0,0-.94,0L8.58,4.74a.66.66,0,0,0,0,.94Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconAsc.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconDesc = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 18.14 19.48\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <style>\r\n        .cls-1{\"{fill:#398fb6;}\"}\r\n        .cls-2{\"{fill:#727272;}\"}\r\n        .cls-3{\"{fill:#3697d3;}\"}\r\n      </style>\r\n    </defs>\r\n    <title>icon-sort-down</title>\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M10.57,1.33V.66A.66.66,0,0,0,9.9,0H.66A.66.66,0,0,0,0,.66v.66A.66.66,0,0,0,.66,2H9.9a.66.66,0,0,0,.66-.66Zm0,0\"\r\n        />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M8.66,4.18h-8A.66.66,0,0,0,0,4.84V5.5a.66.66,0,0,0,.66.66h8a.66.66,0,0,0,.66-.66V4.84a.66.66,0,0,0-.66-.66Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M8.66,4.18\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M7.41,8.35H.66A.66.66,0,0,0,0,9v.66a.66.66,0,0,0,.66.66H7.41a.66.66,0,0,0,.66-.66V9a.66.66,0,0,0-.66-.66Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M7.41,8.35\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M6.17,13H.66a.66.66,0,0,0-.66.66v.66A.66.66,0,0,0,.66,15h5.5a.66.66,0,0,0,.66-.66v-.66A.66.66,0,0,0,6.17,13Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M6.17,13\" />\r\n        <path\r\n          className=\"cls-1\"\r\n          d=\"M4.92,17.17H.66a.66.66,0,0,0-.66.66v.66a.66.66,0,0,0,.66.66H4.92a.66.66,0,0,0,.66-.66v-.66a.66.66,0,0,0-.66-.66Z\"\r\n        />\r\n        <path className=\"cls-1\" d=\"M4.92,17.17\" />\r\n        <path className=\"cls-2\" d=\"M19.78,14.13\" />\r\n        <path\r\n          className=\"cls-3\"\r\n          d=\"M17.94,14.13l-.47-.47a.66.66,0,0,0-.94,0l-2.28,2.28V1a.66.66,0,0,0-.66-.66h-.66a.66.66,0,0,0-.66.66V15.94L10,13.66a.66.66,0,0,0-.94,0l-.47.47a.66.66,0,0,0,0,.94l4.21,4.21a.66.66,0,0,0,.94,0l4.21-4.21a.66.66,0,0,0,0-.94Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconDesc.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconSuccess = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 21.6 21.6\"\r\n  >\r\n    <g id=\"Layer_icon-success1\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_icon-success2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M10.8,0A10.8,10.8,0,1,0,21.6,10.8,10.81,10.81,0,0,0,10.8,0Zm0,20.77a10,10,0,1,1,10-10,10,10,0,0,1-10,10Zm0,0\"\r\n        />\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M15.89,6.37,9.5,13.55,5.66,10.48a.42.42,0,1,0-.52.65l4.15,3.32a.42.42,0,0,0,.26.09.41.41,0,0,0,.31-.14l6.64-7.48a.42.42,0,1,0-.62-.55Zm0,0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconSuccess.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconPrevious = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 35.56 35.56\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <style>\r\n        .cls-prev-1{`{fill:${props.fill ? props.fill : \"#3697d3\"}}`}\r\n        .cls-prev-2{\"{fill:#2d3033;}\"}\r\n      </style>\r\n    </defs>\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          className=\"cls-prev-1\"\r\n          d=\"M0,17.78A17.78,17.78,0,1,0,17.78,0,17.8,17.8,0,0,0,0,17.78Zm1.44,0A16.34,16.34,0,1,1,17.78,34.12,16.36,16.36,0,0,1,1.44,17.78Z\"\r\n        />\r\n        <path className=\"cls-prev-2\" d=\"M17.78,1.44\" />\r\n        <path\r\n          className=\"cls-prev-1\"\r\n          d=\"M20.31,23.69a.73.73,0,0,0,0-1l-4.89-4.89,4.89-4.89a.72.72,0,0,0-1-1l-5.4,5.4a.72.72,0,0,0,0,1l5.4,5.4a.72.72,0,0,0,1,0Z\"\r\n        />\r\n        <path className=\"cls-prev-1\" d=\"M20.31,23.69\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconPrevious.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconUnsuccessfull = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"21.92px\"}\r\n    height={props.height ? props.height : \"21.93px\"}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 21.93 21.93\"\r\n  >\r\n    <defs />\r\n    <g id=\"Layer_icon-unsuccessfull1\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_icon-unsuccessfull2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M11,0a11,11,0,1,0,11,11A11,11,0,0,0,11,0Zm0,21.09A10.12,10.12,0,1,1,21.09,11,10.13,10.13,0,0,1,11,21.09Zm0,0\"\r\n        />\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M15.06,6.87a.42.42,0,0,0-.6,0L11,10.37l-3.5-3.5a.42.42,0,1,0-.6.6l3.5,3.5-3.5,3.5a.42.42,0,0,0,.3.72.42.42,0,0,0,.3-.12l3.5-3.5,3.5,3.5a.42.42,0,0,0,.6-.6L11.56,11l3.5-3.5a.42.42,0,0,0,0-.6Zm0,0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconUnsuccessfull.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconNext = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 35.56 35.56\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <style>\r\n        .cls-next-1{`{fill:${props.fill ? props.fill : \"#3697d3\"}}`}\r\n        .cls-next-2{\"{fill:#2d3033;}\"}\r\n      </style>\r\n    </defs>\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          className=\"cls-next-1\"\r\n          d=\"M35.56,17.78A17.78,17.78,0,1,0,17.78,35.56,17.8,17.8,0,0,0,35.56,17.78Zm-1.44,0A16.34,16.34,0,1,1,17.78,1.44,16.36,16.36,0,0,1,34.12,17.78Z\"\r\n        />\r\n        <path className=\"cls-next-2\" d=\"M17.78,34.12\" />\r\n        <path\r\n          className=\"cls-next-1\"\r\n          d=\"M15.25,11.88a.73.73,0,0,0,0,1l4.89,4.89-4.89,4.89a.72.72,0,1,0,1,1l5.4-5.4a.72.72,0,0,0,0-1l-5.4-5.4a.72.72,0,0,0-1,0Z\"\r\n        />\r\n        <path className=\"cls-next-1\" d=\"M15.25,11.88\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconNext.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconWarning = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 20.8 20.8\"\r\n  >\r\n    <defs />\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M10.4,0A10.4,10.4,0,1,0,20.8,10.4,10.41,10.41,0,0,0,10.4,0Zm0,20A9.6,9.6,0,1,1,20,10.4,9.61,9.61,0,0,1,10.4,20Zm0,0\"\r\n        />\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M10.4,4a.4.4,0,0,0-.4.4v8.8a.4.4,0,1,0,.8,0V4.4a.4.4,0,0,0-.4-.4Zm0,0\"\r\n        />\r\n        <path\r\n          fill={props.fill ? props.fill : \"#FFFFFF\"}\r\n          d=\"M10.4,14.8a.4.4,0,0,0-.4.4V16a.4.4,0,1,0,.8,0v-.8a.4.4,0,0,0-.4-.4Zm0,0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconWarning.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconReady = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 25\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs />\r\n    <g\r\n      id=\"Icons\"\r\n      stroke=\"none\"\r\n      strokeWidth=\"1\"\r\n      fill=\"none\"\r\n      fillRule=\"evenodd\"\r\n      strokeLinecap=\"square\"\r\n    >\r\n      <g\r\n        id=\"icon-ready\"\r\n        strokeWidth=\"2\"\r\n        stroke={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <g\r\n          id=\"commonux-checkmark-16\"\r\n          transform=\"translate(16.000000, 7.500000)\"\r\n        >\r\n          <g id=\"CommonUX_CheckMark_16\">\r\n            <g id=\"Group-2\">\r\n              <path\r\n                d=\"M0.333333333,4.33333333 L6.33333333,9.66666667\"\r\n                id=\"Line\"\r\n              />\r\n              <path\r\n                d=\"M15.6666667,0.333333333 L6.33333333,9.66666667\"\r\n                id=\"Line\"\r\n              />\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconReady.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconGenerateReport = props => (\r\n  <svg\r\n    width={props.width}\r\n    height={props.height}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <polygon id=\"path-1\" points=\"0 0 17 0 24 7 24 28 0 28\" />\r\n      <mask\r\n        id=\"mask-2\"\r\n        maskContentUnits=\"userSpaceOnUse\"\r\n        maskUnits=\"objectBoundingBox\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"24\"\r\n        height=\"28\"\r\n        fill=\"white\"\r\n      >\r\n        <use xlinkHref=\"#path-1\" />\r\n      </mask>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g\r\n        id=\"icon-generate-report-dark\"\r\n        stroke={props.fill ? props.fill : \"#3C3C3C\"}\r\n      >\r\n        <g id=\"Group-5\" transform=\"translate(10.000000, 10.000000)\">\r\n          <use\r\n            id=\"Rectangle-7\"\r\n            mask=\"url(#mask-2)\"\r\n            strokeWidth=\"4\"\r\n            xlinkHref=\"#path-1\"\r\n          />\r\n          <g\r\n            id=\"Group-4\"\r\n            transform=\"translate(6.000000, 7.000000)\"\r\n            strokeWidth=\"2\"\r\n          >\r\n            <path d=\"M0.5,1 L9.5,1\" id=\"Line\" strokeLinecap=\"square\" />\r\n            <path d=\"M0.5,5 L12.5,5\" id=\"Line\" strokeLinecap=\"square\" />\r\n            <path d=\"M0.5,9 L12.5,9\" id=\"Line\" strokeLinecap=\"square\" />\r\n            <g id=\"Group-2\" transform=\"translate(4.000000, 7.000000)\">\r\n              <path\r\n                d=\"M12,4 C7.581722,4 4,7.581722 4,12 C4,16.418278 7.581722,20 12,20 C16.418278,20 20,16.418278 20,12 C20,9.87826808 19.1571453,7.84343678 17.6568542,6.34314575 C16.1565632,4.84285472 14.1217319,4 12,4 L12,4 Z\"\r\n                id=\"Shape\"\r\n                fill=\"#FFFFFF\"\r\n                transform=\"translate(12.000000, 12.000000) rotate(45.000000) translate(-12.000000, -12.000000) \"\r\n              />\r\n              <g\r\n                id=\"Group-3\"\r\n                transform=\"translate(12.000000, 12.000000) rotate(-45.000000) translate(-12.000000, -12.000000) translate(9.000000, 9.000000)\"\r\n                strokeLinecap=\"square\"\r\n              >\r\n                <path\r\n                  d=\"M5.12132034,0.878679656 L0.878679656,5.12132034\"\r\n                  id=\"Line\"\r\n                />\r\n                <path\r\n                  d=\"M0.878679656,0.878679656 L5.12132034,5.12132034\"\r\n                  id=\"Line\"\r\n                />\r\n              </g>\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nIconGenerateReport.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconMenu = props => (\r\n  <svg\r\n    width={props.width ? `${props.width}px` : \"32px\"}\r\n    height={props.height ? `${props.height}px` : \"32px\"}\r\n    viewBox={\r\n      props.width && props.height\r\n        ? `0 0 ${props.width} ${props.height}`\r\n        : \"0 0 32 32\"\r\n    }\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n        <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\" />\r\n        <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\" />\r\n      </linearGradient>\r\n    </defs>\r\n    <g\r\n      id=\"Icons\"\r\n      stroke=\"none\"\r\n      strokeWidth=\"1\"\r\n      fill=\"none\"\r\n      fillRule=\"evenodd\"\r\n      strokeLinecap=\"square\"\r\n    >\r\n      <g id=\"icon-desktop-options-idle\" stroke=\"#3C3C3C\" strokeWidth=\"2\">\r\n        <g id=\"Group-2\" transform=\"translate(12.000000, 14.000000)\">\r\n          <path d=\"M23.5,9 L0.5,9\" id=\"Line\" />\r\n          <path d=\"M23.5,1 L0.5,1\" id=\"Line\" />\r\n          <path d=\"M23.5,17 L0.5,17\" id=\"Line\" />\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconMenu.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconDownloadParameterFile = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"24\"}\r\n    height={props.height ? props.height : \"24\"}\r\n    viewBox=\"0 0 24 24\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-download24-idle\" stroke=\"#3C3C3C\">\r\n        <g id=\"commonux-download-16\" transform=\"translate(3.857143, 1.000000)\">\r\n          <g id=\"CommonUX_Download_16\">\r\n            <path\r\n              d=\"M14.5714286,6.5 L8.14285714,15 L1.71428571,6.5 L4.64285714,6.5 L4.64285714,0.5 L11.6428571,0.5 L11.6428571,6.5 L14.5714286,6.5 Z M3.64285714,18.5 L0.642857143,18.5 L0.642857143,21.5 L3.64285714,21.5 L3.64285714,18.5 Z M9.64285714,18.5 L6.64285714,18.5 L6.64285714,21.5 L9.64285714,21.5 L9.64285714,18.5 Z M15.6428571,18.5 L12.6428571,18.5 L12.6428571,21.5 L15.6428571,21.5 L15.6428571,18.5 Z\"\r\n              id=\"Shape\"\r\n            />\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconDownloadParameterFile.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconTrend = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"48px\"}\r\n    height={props.height ? props.height : \"48px\"}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n        <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\" />\r\n        <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\" />\r\n      </linearGradient>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-trend\" fillRule=\"nonzero\" fill=\"#3C3C3C\">\r\n        <g id=\"fills\" transform=\"translate(5.000000, 5.000000)\">\r\n          <path\r\n            d=\"M2,36 L36,36 L36,2 L2,2 L2,36 Z M0,0 L38,0 L38,38 L0,38 L0,0 Z\"\r\n            id=\"Rectangle-8\"\r\n          />\r\n          <polygon id=\"Line\" points=\"1.8 28.6 13.8 12.6 12.2 11.4 0.2 27.4\" />\r\n          <polygon id=\"Line\" points=\"25.8 20.6 37.8 4.6 36.2 3.4 24.2 19.4\" />\r\n          <polygon id=\"Line\" points=\"22.8 19.4 16.8 11.4 15.2 12.6 21.2 20.6\" />\r\n          <path\r\n            d=\"M14.5,13.5 C12.8431458,13.5 11.5,12.1568542 11.5,10.5 C11.5,8.84314575 12.8431458,7.5 14.5,7.5 C16.1568542,7.5 17.5,8.84314575 17.5,10.5 C17.5,12.1568542 16.1568542,13.5 14.5,13.5 Z M14.5,11.5 C15.0522847,11.5 15.5,11.0522847 15.5,10.5 C15.5,9.94771525 15.0522847,9.5 14.5,9.5 C13.9477153,9.5 13.5,9.94771525 13.5,10.5 C13.5,11.0522847 13.9477153,11.5 14.5,11.5 Z\"\r\n            id=\"Oval\"\r\n          />\r\n          <path\r\n            d=\"M23,24.5 C21.3431458,24.5 20,23.1568542 20,21.5 C20,19.8431458 21.3431458,18.5 23,18.5 C24.6568542,18.5 26,19.8431458 26,21.5 C26,23.1568542 24.6568542,24.5 23,24.5 Z M23,22.5 C23.5522847,22.5 24,22.0522847 24,21.5 C24,20.9477153 23.5522847,20.5 23,20.5 C22.4477153,20.5 22,20.9477153 22,21.5 C22,22.0522847 22.4477153,22.5 23,22.5 Z\"\r\n            id=\"Oval\"\r\n          />\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconTrend.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\n// const IconHistogram = props => (\r\n//   <svg width={props.width ? props.width : \"48px\"} height={props.height ? props.height : \"48px\"} viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n//     <defs>\r\n//       <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n//         <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\"></stop>\r\n//         <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\"></stop>\r\n//       </linearGradient>\r\n//     </defs>\r\n//     <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n//       <g id=\"icon-histogram\" fill=\"#3C3C3C\">\r\n//         <path d=\"M7,41 L41,41 L41,7 L7,7 L7,41 Z M5,5 L43,5 L43,43 L5,43 L5,5 Z\" id=\"Rectangle-8\" fillRule=\"nonzero\"></path>\r\n//         <rect id=\"Rectangle\" x=\"10\" y=\"27\" width=\"8\" height=\"12\"></rect>\r\n//         <rect id=\"Rectangle\" x=\"20\" y=\"15\" width=\"8\" height=\"24\"></rect>\r\n//         <rect id=\"Rectangle\" x=\"30\" y=\"19\" width=\"8\" height=\"20\"></rect>\r\n//       </g>\r\n//     </g>\r\n//   </svg>\r\n// );\r\n// IconHistogram.propTypes = {\r\n//   fill: PropTypes.string,\r\n//   width: PropTypes.string,\r\n//   height: PropTypes.string,\r\n// }\r\n\r\nconst IconScatter = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"48px\"}\r\n    height={props.height ? props.height : \"48px\"}\r\n    viewBox=\"0 0 48 48\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <defs>\r\n      <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\r\n        <stop stopColor=\"#FFFFFF\" stopOpacity=\"0.5\" offset=\"0%\" />\r\n        <stop stopColor=\"#000000\" stopOpacity=\"0.5\" offset=\"100%\" />\r\n      </linearGradient>\r\n    </defs>\r\n    <g id=\"Icons\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n      <g id=\"icon-scatter\" fill=\"#3C3C3C\">\r\n        <path\r\n          d=\"M7,41 L41,41 L41,7 L7,7 L7,41 Z M5,5 L43,5 L43,43 L5,43 L5,5 Z\"\r\n          id=\"Rectangle-8\"\r\n          fillRule=\"nonzero\"\r\n        />\r\n        <circle id=\"Oval-4\" cx=\"16.5\" cy=\"27.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"12.5\" cy=\"16.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"26.5\" cy=\"30.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"20.4608912\" cy=\"21.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"31.5\" cy=\"21.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"36.5\" cy=\"27.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"26.5\" cy=\"24.5\" r=\"2.5\" />\r\n        <circle id=\"Oval-4\" cx=\"25.5\" cy=\"16.5\" r=\"2.5\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconScatter.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconEventDetail = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9.12 14.25\">\r\n    <g id=\"event-detail-Layer1\">\r\n      <g id=\"event-detail-Layer1-2\">\r\n        <path\r\n          fill=\"#88c64e\"\r\n          d=\"M3.45,13.11H5.67a1.42,1.42,0,0,1-.37.81,1,1,0,0,1-1.47,0,1.42,1.42,0,0,1-.37-.81Zm-.54-.44H6.21l.15-1.21H2.75ZM9.12,4.53A4.38,4.38,0,0,1,7.92,7.61l-.07.08L7.69,8a7.19,7.19,0,0,0-.37.77A8.87,8.87,0,0,0,7,9.58a.32.32,0,0,0,0,.15.57.57,0,0,1,0,.14.34.34,0,0,0,0,.11v1H2.23V10s0-.1,0-.19l-.07-.24a8.85,8.85,0,0,0-.31-.85q-.18-.39-.41-.8l-.18-.28,0-.08v0A4.35,4.35,0,0,1,0,4.53a4.34,4.34,0,0,1,1.34-3.2A4.42,4.42,0,0,1,4.56,0,4.42,4.42,0,0,1,7.78,1.33a4.34,4.34,0,0,1,1.34,3.2Zm-1,0A3.33,3.33,0,0,0,7,2.06,3.42,3.42,0,0,0,4.56,1a3.42,3.42,0,0,0-2.48,1A3.33,3.33,0,0,0,1,4.53a3.37,3.37,0,0,0,.9,2.33l.18.23.18.33a10,10,0,0,1,.46.9q.21.47.37,1a3.65,3.65,0,0,1,.15.7H5.85A3.67,3.67,0,0,1,6,9.27a7.9,7.9,0,0,1,.36-1q.21-.47.42-.86L7,7.12a1.26,1.26,0,0,1,.16-.23,3.34,3.34,0,0,0,.93-2.36ZM5.39,5.78\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEventFault = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14.68 14.68\">\r\n    <defs>\r\n      <style>.cls-2{\"clip-path:url(#clip-path);\"}</style>\r\n      <clipPath id=\"clip-path\">\r\n        <rect fill=\"none\" y=\"0.01\" width=\"14.67\" height=\"14.82\" />\r\n      </clipPath>\r\n    </defs>\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <g className=\"cls-2\">\r\n          <path\r\n            fill=\"#f27a59\"\r\n            d=\"M7.34,14.68A7.34,7.34,0,1,0,0,7.34a7.35,7.35,0,0,0,7.34,7.34ZM7.34,1A6.31,6.31,0,1,1,1,7.34,6.32,6.32,0,0,1,7.34,1Zm0,0\"\r\n          />\r\n        </g>\r\n        <path\r\n          fill=\"#f27a59\"\r\n          d=\"M4.58,10.18a.52.52,0,0,0,.73,0l2-2,2,2a.52.52,0,0,0,.73,0,.52.52,0,0,0,0-.73l-2-2,2-2a.52.52,0,0,0-.73-.73l-2,2-2-2a.52.52,0,0,0-.73.73l2,2-2,2a.52.52,0,0,0,0,.73Zm0,0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEventNotification = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12.27 14.44\">\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <path\r\n          fill=\"#88cbdc\"\r\n          d=\"M6.14,14.44A1.45,1.45,0,0,0,7.58,13H4.69a1.45,1.45,0,0,0,1.45,1.45Zm4.69-4.33v-4A4.64,4.64,0,0,0,7.22,1.59V1.08a1.08,1.08,0,0,0-2.16,0v.51A4.64,4.64,0,0,0,1.45,6.14v4L0,11.55v.72H12.27v-.72Zm-1.45.72H2.89V6.14a3.25,3.25,0,1,1,6.5,0Zm0,0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEventWarning = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14.54 12.91\">\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <rect fill=\"none\" width=\"14.53\" height=\"12.91\" />\r\n        <polygon\r\n          fill=\"#e1d54a\"\r\n          points=\"7.79 9.04 6.74 9.04 6.6 4.18 7.94 4.18 7.79 9.04\"\r\n        />\r\n        <rect fill=\"#e1d54a\" x=\"6.75\" y=\"9.77\" width=\"1.05\" height=\"1.05\" />\r\n        <path\r\n          fill=\"#e1d54a\"\r\n          d=\"M14.32,10.49,8.65.8A1.61,1.61,0,0,0,5.88.8L.22,10.49a1.56,1.56,0,0,0,0,1.59,1.59,1.59,0,0,0,1.39.8H12.93a1.59,1.59,0,0,0,1.39-.8A1.56,1.56,0,0,0,14.32,10.49ZM13,11.35a.1.1,0,0,1-.1.05H1.6a.1.1,0,0,1-.1-.05.08.08,0,0,1,0-.09L7.17,1.56a.12.12,0,0,1,.19,0L13,11.26A.08.08,0,0,1,13,11.35Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEventCollapsed = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 7.41 12\">\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <g id=\"Icons\">\r\n          <g id=\"icon-commonux-right-blue\">\r\n            <g id=\"commonux-right-16\">\r\n              <g id=\"CommonUX_Right_16\">\r\n                <polygon\r\n                  id=\"Shape\"\r\n                  fill=\"#3b92cf\"\r\n                  points=\"0 10.59 4.58 6 0 1.41 1.41 0 7.41 6 1.41 12 0 10.59\"\r\n                />\r\n              </g>\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEventExpanded = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 7.41\">\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <g id=\"Icons\">\r\n          <g id=\"icon-commonux-right-blue\">\r\n            <g id=\"commonux-right-16\">\r\n              <g id=\"CommonUX_Right_16\">\r\n                <polygon\r\n                  id=\"Shape\"\r\n                  fill=\"#3b92cf\"\r\n                  points=\"1.41 0 6 4.58 10.59 0 12 1.41 6 7.41 0 1.41 1.41 0\"\r\n                />\r\n              </g>\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconInfo = () => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 16\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#fff\"\r\n          d=\"M8,1A7,7,0,1,1,1,8,7,7,0,0,1,8,1M8,0a8,8,0,1,0,8,8A8,8,0,0,0,8,0Zm2,12H9V6H6V7H7v5H6v1h4ZM9,3H7V5H9Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconArrowTopBar = () => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 14.22 9.49\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <polygon\r\n          fill=\"#b3b2b3\"\r\n          points=\"7.11 9.49 0 1.53 1.72 0 7.11 6.04 12.5 0 14.22 1.53 7.11 9.49\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconHelp = props => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 16\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#b3b3b4\"\r\n          d=\"M8,0a8,8,0,1,0,8,8A8,8,0,0,0,8,0ZM9,13H7V11H9ZM9,8.75V10H7V7.5s3.31.12,3.24-1.62c0-.76-1-1.2-2.06-1.21C7.69,4.67,6.09,4.74,6,6H4c.13-1.77,1.58-3,4.17-3C11.5,3,12,5.12,12,5.75,12,8.56,9,8.75,9,8.75Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconWheel = props => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"24px\"\r\n    height=\"26px\"\r\n    viewBox=\"0 0 16 15\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill={props.fill ? props.fill : \"#b3b3b4\"}\r\n          d=\"M8,0a8,8,0,1,0,8,8A8,8,0,0,0,8,0ZM5.59,10.29,4.4,12.36a5.68,5.68,0,0,1-1.3-1.53,5.58,5.58,0,0,1-.68-1.89H4.83a.89.89,0,0,1,.74.46A1,1,0,0,1,5.59,10.29Zm0-3.69a1,1,0,0,1-.76.46H2.42A5.58,5.58,0,0,1,3.1,5.17,5.68,5.68,0,0,1,4.4,3.64L5.6,5.72A.89.89,0,0,1,5.57,6.6ZM8,13.66a5.65,5.65,0,0,1-2-.36l1.21-2.09a.87.87,0,0,1,.77-.4,1,1,0,0,1,.78.42L10,13.3A5.65,5.65,0,0,1,8,13.66ZM6.59,8A1.41,1.41,0,1,1,8,9.41,1.41,1.41,0,0,1,6.59,8ZM8.77,4.79a.87.87,0,0,1-.77.4,1,1,0,0,1-.78-.42L6,2.7a5.62,5.62,0,0,1,4,0Zm4.13,6a5.68,5.68,0,0,1-1.3,1.53l-1.2-2.09a.87.87,0,0,1,0-.87,1,1,0,0,1,.76-.46h2.39A5.58,5.58,0,0,1,12.9,10.83ZM11.17,7.06a.89.89,0,0,1-.74-.46,1,1,0,0,1,0-.89L11.6,3.64a5.68,5.68,0,0,1,1.3,1.53,5.58,5.58,0,0,1,.68,1.89Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconTimeTrend = props => (\r\n  <svg\r\n    width=\"32px\"\r\n    height=\"32px\"\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    xmlns=\"http://www.w3.org/1999/xlink\"\r\n  >\r\n    <defs>\r\n      <path\r\n        d=\"M4,25 L30,25 L30,27 L4,27 L3,27 L2,27 L2,4 L4,4 L4,25 Z M6.71,19.71 L5.29,18.29 L10.13,13.36 C10.0087324,13.0409234 9.95098365,12.7012249 9.96,12.36 C9.9921539,11.466836 10.4983626,10.6586724 11.2879423,10.2399365 C12.0775219,9.8212006 13.0305165,9.85550841 13.7879423,10.3299365 C14.545368,10.8043646 14.9921539,11.646836 14.96,12.54 L17.96,15.54 C18.6505761,14.9837176 19.5885903,14.8458869 20.41,15.18 L28.29,7.29 L29.71,8.74 L21.82,16.62 C22.1963613,17.5576802 21.9712928,18.6297243 21.2496096,19.3368774 C20.5279265,20.0440304 19.4515271,20.2472511 18.5216945,19.8518987 C17.591862,19.4565463 16.9914214,18.5403556 17,17.53 C17,17.45 17,17.45 17,17.45 L14,14.45 C13.5476243,14.8152137 12.981315,15.0098825 12.4,15 C12.1217296,14.9864904 11.8478019,14.9256176 11.59,14.82 L6.71,19.71 Z\"\r\n        id=\"path-1\"\r\n      />\r\n    </defs>\r\n    <g\r\n      id=\"IconTrend\"\r\n      stroke=\"none\"\r\n      stroke-width=\"1\"\r\n      fill=\"none\"\r\n      fill-rule=\"evenodd\"\r\n    >\r\n      <mask id=\"mask-2\" fill=\"white\">\r\n        <use xlinkHref=\"#path-1\" />\r\n      </mask>\r\n      <use id=\"Combined-Shape\" fill=\"#1F1F1F\" xlinkHref=\"#path-1\" />\r\n      <g id=\"Colors-/-Grey-70\" mask=\"url(#mask-2)\" fill=\"#464646\">\r\n        <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"24\" height=\"26\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconScatterPlot = props => (\r\n  <svg\r\n    width=\"32px\"\r\n    height=\"32px\"\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    xmlns=\"http://www.w3.org/1999/xlink\"\r\n  >\r\n    <defs>\r\n      <path\r\n        d=\"M4,25 L30,25 L30,27 L4,27 L3,27 L2,27 L2,4 L4,4 L4,25 Z M8,23 C6.8954305,23 6,22.1045695 6,21 C6,19.8954305 6.8954305,19 8,19 C9.1045695,19 10,19.8954305 10,21 C10,22.1045695 9.1045695,23 8,23 Z M18,23 C16.8954305,23 16,22.1045695 16,21 C16,19.8954305 16.8954305,19 18,19 C19.1045695,19 20,19.8954305 20,21 C20,22.1045695 19.1045695,23 18,23 Z M26,9 C24.8954305,9 24,8.1045695 24,7 C24,5.8954305 24.8954305,5 26,5 C27.1045695,5 28,5.8954305 28,7 C28,8.1045695 27.1045695,9 26,9 Z M20,15 C18.8954305,15 18,14.1045695 18,13 C18,11.8954305 18.8954305,11 20,11 C21.1045695,11 22,11.8954305 22,13 C22,14.1045695 21.1045695,15 20,15 Z M13,18 C11.8954305,18 11,17.1045695 11,16 C11,14.8954305 11.8954305,14 13,14 C14.1045695,14 15,14.8954305 15,16 C15,17.1045695 14.1045695,18 13,18 Z M11,11 C9.8954305,11 9,10.1045695 9,9 C9,7.8954305 9.8954305,7 11,7 C12.1045695,7 13,7.8954305 13,9 C13,10.1045695 12.1045695,11 11,11 Z\"\r\n        id=\"path-2\"\r\n      />\r\n    </defs>\r\n    <g\r\n      id=\"Icon-/-Scatter-plot\"\r\n      stroke=\"none\"\r\n      stroke-width=\"1\"\r\n      fill=\"none\"\r\n      fill-rule=\"evenodd\"\r\n    >\r\n      <mask id=\"mask-3\" fill=\"white\">\r\n        <use xlinkHref=\"#path-2\" />\r\n      </mask>\r\n      <use id=\"Combined-Shape\" fill=\"#1F1F1F\" xlinkHref=\"#path-2\" />\r\n      <g id=\"Colors-/-Icon-Grey-70\" mask=\"url(#mask-3)\" fill=\"#464646\">\r\n        <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"32\" height=\"32\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconHistogram = props => (\r\n  <svg\r\n    width=\"32px\"\r\n    height=\"32px\"\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    xmlns=\"http://www.w3.org/1999/xlink\"\r\n  >\r\n    <defs>\r\n      <path\r\n        d=\"M22,11 L29,11 L29,23 L22,23 L22,11 Z M14,15 L21,15 L21,23 L14,23 L14,15 Z M4,25 L30,25 L30,28 L4,28 L3,28 L2,28 L2,5 L4,5 L4,25 Z M13,7 L13,23 L6,23 L6,7 L13,7 Z M11,21 L11,9 L8,9 L8,21 L11,21 Z\"\r\n        id=\"histogrampath\"\r\n      />\r\n    </defs>\r\n    <g\r\n      id=\"Icon-/-Histogram\"\r\n      stroke=\"none\"\r\n      stroke-width=\"1\"\r\n      fill=\"none\"\r\n      fill-rule=\"evenodd\"\r\n    >\r\n      <mask id=\"histogram-mask-2\" fill=\"white\">\r\n        <use xlinkHref=\"#histogrampath\" />\r\n      </mask>\r\n      <use id=\"Combined-Shape\" fill=\"#1F1F1F\" xlinkHref=\"#histogrampath\" />\r\n      <g id=\"Colors-/-Grey-70\" mask=\"url(#histogram-mask-2)\" fill=\"#464646\">\r\n        <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"32\" height=\"32\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconGps = props => (\r\n  <svg\r\n    width=\"32px\"\r\n    height=\"32px\"\r\n    viewBox=\"0 0 32 32\"\r\n    version=\"1.1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    xmlns=\"http://www.w3.org/1999/xlink\"\r\n  >\r\n    <defs>\r\n      <path\r\n        d=\"M25.62,22 L29.62,30 L2.38,30 L6.38,22 L9.59,22 C10.19,22.74 10.8,23.41 11.38,24 L7.62,24 L5.62,28 L26.38,28 L24.38,24 L20.47,24 C21.05,23.41 21.66,22.74 22.26,22 L25.62,22 Z M15.92,2 C20.8947582,2.02138926 24.934588,6.02562592 25,11 C25,18.8 15.92,25.4 15.92,25.4 C15.92,25.4 7,18.8 7,11 C6.99980486,6.06051233 10.9807075,2.04390655 15.92,2 Z M15.92,15.15 C16.980866,15.15 17.9982816,14.7285726 18.7484271,13.9784271 C19.4985726,13.2282816 19.92,12.210866 19.92,11.15 C19.92,8.940861 18.129139,7.15 15.92,7.15 C13.710861,7.15 11.92,8.940861 11.92,11.15 C11.92,13.359139 13.710861,15.15 15.92,15.15 Z\"\r\n        id=\"Gpspath\"\r\n      />\r\n    </defs>\r\n    <g\r\n      id=\"Icon-/-GPS\"\r\n      stroke=\"none\"\r\n      stroke-width=\"1\"\r\n      fill=\"none\"\r\n      fill-rule=\"evenodd\"\r\n    >\r\n      <mask id=\"gps-mask-2\" fill=\"white\">\r\n        <use xlinkHref=\"#Gpspath\" />\r\n      </mask>\r\n      <use id=\"Combined-Shape\" fill=\"#1F1F1F\" xlinkHref=\"#Gpspath\" />\r\n      <g id=\"Colors-/-Grey-70\" mask=\"url(#gps-mask-2)\" fill=\"#464646\">\r\n        <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"32\" height=\"32\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconUser = () => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 16\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#b3b3b4\"\r\n          d=\"M14,11.64V16H0V11.64C0,9.64,3.12,8,7,8S14,9.67,14,11.64ZM7,0a3.5,3.5,0,1,0,3.5,3.5A3.5,3.5,0,0,0,7,0Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconEmailBell = () => (\r\n  <svg\r\n    width=\"24px\"\r\n    height=\"33px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 24 33\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#fff\"\r\n          d=\"M22,18c0-5.56-1.82-12.44-8-13.78V2a2,2,0,0,0-4,0V4.22C3.82,5.56,2,12.44,2,18c0,3.66-2,4-2,4v4H24V22S22,21.66,22,18ZM16,29a4,4,0,0,1-8,0Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconBreadCrumb = props => (\r\n  <svg\r\n    width={props.width ? props.width : \"16px\"}\r\n    height={props.height ? props.height : \"15px\"}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 15\"\r\n  >\r\n    <defs />\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <polygon\r\n          fill={props.fill ? props.fill : \"#0c74da\"}\r\n          points=\"8 0 0 7 2 7 2 15 6 15 6 10 10 10 10 15 14 15 14 7 16 7 8 0\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconBreadCrumb.propTypes = {\r\n  fill: PropTypes.string,\r\n  width: PropTypes.string,\r\n  height: PropTypes.string\r\n};\r\n\r\nconst IconMobileHome = () => (\r\n  <svg\r\n    width=\"24px\"\r\n    height=\"24px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 24 24\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <polygon\r\n          fill=\"#eee\"\r\n          points=\"21 24 15 24 15 17 9 17 9 24 3 24 3 14 0 14 12 0 24 14 21 14 21 24\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconArrowToDown = () => (\r\n  <svg\r\n    width=\"14px\"\r\n    height=\"9px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 14.22 9.49\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g data-name=\"Layer 1\">\r\n        <polygon\r\n          id=\"icon-arrow-down\"\r\n          fill=\"#fff\"\r\n          points=\"7.11 9.49 0 1.53 1.72 0 7.11 6.04 12.5 0 14.22 1.53 7.11 9.49\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconFeedback = () => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 16\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#b3b3b4\"\r\n          d=\"M14,3v7H10.32L8,11.78V10H2V3H14m2-2H0V12H6v3.83L11,12h5V1Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconFailedUpload = () => (\r\n  <svg\r\n    width=\"15px\"\r\n    height=\"15px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 15 15\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Content\">\r\n        <path\r\n          fill=\"#f03040\"\r\n          d=\"M7.5,0A7.5,7.5,0,1,0,15,7.5,7.5,7.5,0,0,0,7.5,0Zm3.26,9.7L9.7,10.76,7.5,8.56l-2.2,2.2L4.24,9.7l2.2-2.2L4.24,5.3,5.3,4.24l2.2,2.2,2.2-2.2L10.76,5.3,8.56,7.5Z\"\r\n        />\r\n        <polygon\r\n          fill=\"#fff\"\r\n          points=\"10.76 9.7 9.7 10.76 7.5 8.56 5.3 10.76 4.24 9.7 6.44 7.5 4.24 5.3 5.3 4.24 7.5 6.44 9.7 4.24 10.76 5.3 8.56 7.5 10.76 9.7\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconGoToLink = () => (\r\n  <svg\r\n    width=\"16px\"\r\n    height=\"16px\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 14 14\"\r\n  >\r\n    <g id=\"Layer_2\" data-name=\"Layer 2\">\r\n      <g id=\"Layer_1-2\" data-name=\"Layer 1\">\r\n        <path\r\n          fill=\"#b4b4b5\"\r\n          d=\"M12,9h2v5H0V0H5V2H2V12H12ZM8,0l2.22,2.22L4.33,8.11,5.89,9.67l5.89-5.89L14,6V0Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\n/* Powertrain ICONS */\r\nconst IconDrive = props => (\r\n  <svg\r\n    id={props.id ? props.id : \"drive-icon\"}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    preserveAspectRatio=\"none\"\r\n    width={props.width ? props.width : \"48\"}\r\n    height={props.height ? props.height : \"48\"}\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <defs>\r\n      <path id={`${props.id}_11dax`} d=\"M0 0v35h2v2h16v-2h2V0z\" />\r\n      <path\r\n        id={`${props.id}_11dcx`}\r\n        d=\"M14 6v35h2v2h16v-2h2V6H14zm3 10h14v-6H17v6zm11 4l-3 8h7L20 40l3-9h-6l11-11z\"\r\n      />\r\n    </defs>\r\n    <g fill=\"none\" fillRule=\"evenodd\">\r\n      <g transform=\"translate(14 6)\">\r\n        <mask id={`${props.id}_11dbx`} fill=\"#fff\">\r\n          <use xlinkHref={`#${props.id}_11dax`} />\r\n        </mask>\r\n        <use fill=\"#0096EA\" xlinkHref={`#${props.id}_11dax`} />\r\n        <g fill=\"#FFF\" mask={`url(#${props.id}_11dbx)`}>\r\n          <path d=\"M-14-6h48v48h-48z\" />\r\n        </g>\r\n      </g>\r\n      <mask id={`${props.id}_11ddx`} fill=\"#fff\">\r\n        <use xlinkHref={`#${props.id}_11dcx`} />\r\n      </mask>\r\n      <use fill=\"#319A5D\" xlinkHref={`#${props.id}_11dcx`} />\r\n      <g\r\n        fill={props.fill ? props.fill : \"#141414\"}\r\n        mask={`url(#${props.id}_11ddx)`}\r\n      >\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconDrive.propTypes = {\r\n  id: PropTypes.string,\r\n  fill: PropTypes.string,\r\n  width: PropTypes.any,\r\n  height: PropTypes.any\r\n};\r\n\r\nconst IconTransformer = props => (\r\n  <svg\r\n    id={props.id || \"trafo_icon_\"}\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    preserveAspectRatio=\"none\"\r\n    width={props.width ? props.width : \"48\"}\r\n    height={props.height ? props.height : \"48\"}\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <defs>\r\n      <path\r\n        id={`${props.id}_a`}\r\n        d=\"M22 8V6h-2V0h-4v6h-2V0h-4v6H8V0H4v6H2v2H0v20h6v4h12v-4h6V8z\"\r\n      />\r\n      <path\r\n        id={`${props.id}_c`}\r\n        d=\"M34 19v-2h-2v-6h-4v6h-2v-6h-4v6h-2v-6h-4v6h-2v2h-2v20h6v4h12v-4h6V19h-2zM16 35h-2V23h2v12zm6 0h-2V23h2v12zm6 0h-2V23h2v12zm6 0h-2V23h2v12z\"\r\n      />\r\n    </defs>\r\n    <g fill=\"none\" fillRule=\"evenodd\">\r\n      <g transform=\"translate(12 11)\">\r\n        <mask id={`${props.id}_b`} fill=\"#fff\">\r\n          <use xlinkHref={`#${props.id}_a`} />\r\n        </mask>\r\n        <use fill=\"#0096EA\" xlinkHref={`#${props.id}_a`} />\r\n        <g fill=\"#FFF\" mask={`url(#${props.id}_b)`}>\r\n          <path d=\"M-12-11h48v48h-48z\" />\r\n        </g>\r\n      </g>\r\n      <mask id={`${props.id}_d`} fill=\"#fff\">\r\n        <use xlinkHref={`#${props.id}_c`} />\r\n      </mask>\r\n      <use fill=\"#464646\" fillRule=\"nonzero\" xlinkHref={`#${props.id}_c`} />\r\n      <g\r\n        fill={props.fill ? props.fill : \"#141414\"}\r\n        mask={`url(#${props.id}_d)`}\r\n      >\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconTransformer.propTypes = {\r\n  id: PropTypes.string,\r\n  fill: PropTypes.string,\r\n  width: PropTypes.any,\r\n  height: PropTypes.any\r\n};\r\n\r\nconst IconGenerator = props => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    preserveAspectRatio=\"none\"\r\n    width={props.width ? props.width : \"48\"}\r\n    height={props.height ? props.height : \"48\"}\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <defs>\r\n      <path id={`${props.id}_a`} d=\"M36 18H12v4h-2v4H4v6h6v4h2v4h24z\" />\r\n      <path\r\n        id={`${props.id}_c`}\r\n        d=\"M36 18H12v4h-2v4H4v6h6v4h2v4h24V18zm-4 18H16v-2h16v2zm0-6H16v-2h16v2zm0-6H16v-2h16v2zm6-6h3l3 4v14l-3 4h-3V18z\"\r\n      />\r\n    </defs>\r\n    <g fill=\"none\" fillRule=\"evenodd\">\r\n      <mask id={`${props.id}_b`} fill=\"#fff\">\r\n        <use xlinkHref={`#${props.id}_a`} />\r\n      </mask>\r\n      <use fill=\"#0096EA\" xlinkHref={`#${props.id}_a`} />\r\n      <g fill=\"#FFF\" mask={`url(#${props.id}_b)`}>\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n      <mask id={`${props.id}_d`} fill=\"#fff\">\r\n        <use xlinkHref={`#${props.id}_c`} />\r\n      </mask>\r\n      <use fill=\"#464646\" fillRule=\"nonzero\" xlinkHref={`#${props.id}_c`} />\r\n      <g\r\n        fill={props.fill ? props.fill : \"#141414\"}\r\n        mask={`url(#${props.id}_d)`}\r\n      >\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconGenerator.propTypes = {\r\n  id: PropTypes.string,\r\n  fill: PropTypes.string,\r\n  width: PropTypes.any,\r\n  height: PropTypes.any\r\n};\r\n\r\nconst IconPowertrain = props => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width={props.width || \"24\"}\r\n    height={props.width || \"24\"}\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <defs />\r\n    <g fill=\"none\" fillRule=\"evenodd\">\r\n      <mask id={`${props.id}_b`} fill=\"#fff\">\r\n        <path d=\"M16.336 8h15.328L38 13.977V42h-6l-2-4H18l-2 4h-6V13.977z\" />\r\n      </mask>\r\n      <use fill=\"#0096EA\" xlinkHref=\"#1a33\" />\r\n      <g fill=\"#FFF\" mask={`url(#${props.id}_b)`}>\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n      <mask id={`${props.id}_d`} fill=\"#fff\">\r\n        <path d=\"M16.336 8h15.328L38 13.977V42h-6l-2-4H18l-2 4h-6V13.977L16.336 8zM4 22h4v12H4V22zm36 0h4v12h-4V22zm-12-8L16 24l6 2-4 8 14-12h-8l4-8z\" />\r\n      </mask>\r\n      <use fill=\"#000\" xlinkHref=\"#1c33\" />\r\n      <g fill={props.fill || \"#141414\"} mask={`url(#${props.id}_d)`}>\r\n        <path d=\"M0 0h48v48H0z\" />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\nIconPowertrain.propTypes = {\r\n  id: PropTypes.string,\r\n  fill: PropTypes.string,\r\n  width: PropTypes.any,\r\n  height: PropTypes.any\r\n};\r\n\r\nconst IconSwitch = () => (\r\n  <svg\r\n    width=\"16\"\r\n    height=\"12\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 16 12\"\r\n  >\r\n    <g id=\"Layer_2\">\r\n      <g id=\"Layer_1-2\">\r\n        <path\r\n          fill=\"#4f89c8\"\r\n          d=\"M0,12S.58,6.8,10,6.8V10l6-5L10,0V3.2C2.75,3.2,0,6.34,0,12Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n);\r\n\r\nconst IconArrowDownDark = () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"16\"\r\n    height=\"16\"\r\n    viewBox=\"0 0 16 16\"\r\n  >\r\n    <path\r\n      fill=\"#000\"\r\n      fillRule=\"evenodd\"\r\n      d=\"M8 11.664L2.312 5.617l1.376-1.281L8 8.946l4.313-4.61 1.374 1.281z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nconst IconCommonClose = () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"32\"\r\n    height=\"32\"\r\n    viewBox=\"0 0 32 32\"\r\n  >\r\n    <path\r\n      fill=\"#000\"\r\n      fillRule=\"evenodd\"\r\n      d=\"M23.876 10.392l-5.565 5.52 5.565 5.546-2.374 2.392-5.564-5.546-5.565 5.546L8 21.458l5.565-5.546L8 10.392 10.373 8l5.565 5.546L21.502 8z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nconst IconMobileArrowUp = () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"48\"\r\n    height=\"48\"\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <path\r\n      fill=\"#000\"\r\n      fillRule=\"evenodd\"\r\n      d=\"M24 15.75l13 13.5-3.5 3-9.5-10.5-10 10.5-3-3z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nconst IconMobileArrowDown = () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"48\"\r\n    height=\"48\"\r\n    viewBox=\"0 0 48 48\"\r\n  >\r\n    <path\r\n      fill=\"#000\"\r\n      fillRule=\"evenodd\"\r\n      d=\"M24 32.25l-13-13.5 3.5-3 9.5 10.5 10-10.5 3 3z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nexport {\r\n  IconFault,\r\n  IconAvailability,\r\n  IconStress,\r\n  IconReliability,\r\n  IconTemperature,\r\n  IconCalendar,\r\n  IconFilter,\r\n  IconClose,\r\n  IconHome,\r\n  IconMultiSignal,\r\n  IconAlarm,\r\n  IconReport,\r\n  IconAnalysis,\r\n  IconEdit,\r\n  IconDone,\r\n  IconOptions,\r\n  IconDownCaret,\r\n  IconAddFile,\r\n  IconAsc,\r\n  IconDesc,\r\n  IconPrevious,\r\n  IconNext,\r\n  IconSuccess,\r\n  IconUnsuccessfull,\r\n  IconWarning,\r\n  IconReady,\r\n  IconGenerateReport,\r\n  AbbLogo,\r\n  IconCollapseButton,\r\n  IconMenu,\r\n  IconDownloadParameterFile,\r\n  IconTrend,\r\n  IconHistogram,\r\n  IconScatter,\r\n  IconEventDetail,\r\n  IconEventFault,\r\n  IconEventNotification,\r\n  IconEventWarning,\r\n  IconEventCollapsed,\r\n  IconEventExpanded,\r\n  IconInfo,\r\n  IconArrowTopBar,\r\n  IconHelp,\r\n  IconUser,\r\n  IconEmailBell,\r\n  IconBreadCrumb,\r\n  IconMobileHome,\r\n  IconArrowToDown,\r\n  IconFeedback,\r\n  IconDrive,\r\n  IconFailedUpload,\r\n  IconGoToLink,\r\n  IconTransformer,\r\n  IconGenerator,\r\n  IconPowertrain,\r\n  IconSwitch,\r\n  IconArrowDownDark,\r\n  IconCommonClose,\r\n  IconMobileArrowUp,\r\n  IconMobileArrowDown,\r\n  IconWheel,\r\n  IconTimeTrend,\r\n  IconScatterPlot,\r\n  IconGps\r\n};\r\n","export const FLEETLIST = {\r\n  TOTAL_DISTANCE: \"Total distance\",\r\n  RUNNING_TIME: \"Running time\",\r\n  WEAR_INDEX: \"Wear index\",\r\n  ENERGY_CONSUMPTION: \"Energy consumption\",\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { Row, Col, Card } from \"react-bootstrap\";\r\nimport Loading from \"../Loading\";\r\nimport { IconWheel } from \"../Icons\";\r\nimport { FLEETLIST } from \"./messages\";\r\n\r\nclass FleetView extends React.Component {\r\n  render() {\r\n    return (\r\n      <div className=\"fleetListContainer\">\r\n        <Card>\r\n          <Card.Header className=\"fleetTitle\"> Fleet view </Card.Header>\r\n          <Card.Body>\r\n            {this.props.fetching === true ? (\r\n              <Loading />\r\n            ) : (\r\n              <div className=\"traindetailcontainer\">\r\n                <Row>\r\n                  {this.props.trainData !== undefined &&\r\n                  this.props.trainData !== null\r\n                    ? this.props.trainData.map((train) => {\r\n                        return (\r\n                          <Col\r\n                            md={12}\r\n                            className={\r\n                              train.td == \"0.0 km\"\r\n                                ? \"noLeftpadding noRightpadding disabledcontent\"\r\n                                : \"noLeftpadding noRightpadding\"\r\n                            }\r\n                            onMouseOver={() => this.props.onHover(train.nm)}\r\n                            onMouseOut={this.props.onHoverOut}\r\n                          >\r\n                            <NavLink\r\n                              to={train.td == \"0.0 km\" ? \"#\" : \"#\"}\r\n                              className={\r\n                                train.td == \"0.0 km\" ? \"disabledcontent\" : \"\"\r\n                              }\r\n                            >\r\n                              <Row\r\n                                className={\r\n                                  train.td == \"0.0 km\"\r\n                                    ? \"fleetList disabledlink\"\r\n                                    : train.nm == this.props.routeSeleted\r\n                                    ? \"fleetList active\"\r\n                                    : \"fleetList\"\r\n                                }\r\n                                id={train.nm}\r\n                                onClick={() => {\r\n                                  this.props.onTrainSelect(train.nm);\r\n                                }}\r\n                              >\r\n                                <Col\r\n                                  md={12}\r\n                                  className=\"align-self-center leftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"fleet-name\">\r\n                                    <span className=\"fleetImg\">\r\n                                      <img\r\n                                        src={require(\"../../assets/images/train.svg\")}\r\n                                        className={\"\"}\r\n                                        alt=\"Train Name\"\r\n                                      />\r\n                                    </span>\r\n                                    <span className=\"boldText\">{train.nm}</span>\r\n                                  </div>\r\n                                  <hr />\r\n                                </Col>\r\n                                <Col\r\n                                  md={5}\r\n                                  className=\"trainlistmobile leftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"fleetText\">\r\n                                    {FLEETLIST.TOTAL_DISTANCE}\r\n                                  </div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={7}\r\n                                  className=\"trainlistmobile noLeftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"boldText\"> {train.td}</div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={5}\r\n                                  className=\"trainlistmobile leftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"fleetText\">\r\n                                    {FLEETLIST.WEAR_INDEX}\r\n                                    {/* <span className=\"fleetIcons\">\r\n                                      <IconWheel fill=\"\" />\r\n                                    </span> */}\r\n                                  </div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={7}\r\n                                  className=\"trainlistmobile noLeftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"boldText\">{train.wix}</div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={5}\r\n                                  className=\"trainlistmobile leftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"fleetText\">\r\n                                    {FLEETLIST.ENERGY_CONSUMPTION}\r\n                                    {/* <span className=\"fleetIcons\">\r\n                                      <img\r\n                                        src={require(\"../../assets/images/voltage.svg\")}\r\n                                        className={\"\"}\r\n                                        alt=\"Wear Index\"\r\n                                      />\r\n                                    </span> */}\r\n                                  </div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={7}\r\n                                  className=\"trainlistmobile noLeftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"boldText\">{train.ec}</div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={5}\r\n                                  className=\"trainlistmobile leftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"fleetText\">\r\n                                    {FLEETLIST.RUNNING_TIME}\r\n                                  </div>\r\n                                </Col>\r\n                                <Col\r\n                                  md={7}\r\n                                  className=\"trainlistmobile noLeftpadding noRightpadding\"\r\n                                >\r\n                                  <div className=\"boldText\"> {train.rtm}</div>\r\n                                </Col>\r\n                              </Row>\r\n                            </NavLink>\r\n                          </Col>\r\n                        );\r\n                      })\r\n                    : \"\"}\r\n                </Row>\r\n              </div>\r\n            )}\r\n          </Card.Body>\r\n        </Card>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nFleetView.defaultProps = {\r\n  fetching: true,\r\n};\r\n\r\nFleetView.propTypes = {\r\n  fetching: PropTypes.bool,\r\n  formatedData: PropTypes.any,\r\n};\r\n\r\nexport default FleetView;\r\n","export const GET_TRAINVIEW_MAPDATA = \"GET_TRAINVIEW_MAPDATA\";\r\nexport const GET_TRAINVIEW_MAPDATA_SUCCESS = \"GET_TRAINVIEW_MAPDATA_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPDATA_FAILURE = \"GET_TRAINVIEW_MAPDATA_FAILURE\";\r\n\r\nexport const GET_TRAINVIEW_GRAPHDATA = \"GET_TRAINVIEW_GRAPHDATA\";\r\nexport const GET_TRAINVIEW_GRAPHDATA_SUCCESS =\r\n  \"GET_TRAINVIEW_GRAPHDATA_SUCCESS\";\r\nexport const GET_TRAINVIEW_GRAPHDATA_FAILURE =\r\n  \"GET_TRAINVIEW_GRAPHDATA_FAILURE\";\r\n\r\nexport const GET_TRAINVIEW_SCATTER = \"GET_TRAINVIEW_SCATTER\";\r\nexport const GET_TRAINVIEW_SCATTER_SUCCESS = \"GET_TRAINVIEW_SCATTER_SUCCESS\";\r\nexport const GET_TRAINVIEW_SCATTER_FAILURE = \"GET_TRAINVIEW_SCATTER_FAILURE\";\r\n\r\nexport const GET_TRAINVIEW_HISTOGRAM = \"GET_TRAINVIEW_HISTOGRAM\";\r\nexport const GET_TRAINVIEW_HISTOGRAM_SUCCESS =\r\n  \"GET_TRAINVIEW_HISTOGRAM_SUCCESS\";\r\nexport const GET_TRAINVIEW_HISTOGRAM_FAILURE =\r\n  \"GET_TRAINVIEW_HISTOGRAM_FAILURE\";\r\nexport const CLEAR_TRAINVIEW_HISTOGRAM = \"CLEAR_TRAINVIEW_HISTOGRAM\";\r\n\r\nexport const SET_TAB = \"SET_TAB\";\r\n\r\nexport const GET_TRAINVIEW_MAP = \"GET_TRAINVIEW_MAP\";\r\nexport const GET_TRAINVIEW_MAPSLIP1_SUCCESS = \"GET_TRAINVIEW_MAPSLIP1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPSLIP2_SUCCESS = \"GET_TRAINVIEW_MAPSLIP2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPSPEED1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPSPEED1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPSPEED2_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPSPEED2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORT1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORT1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORT2_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORT2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS =\r\n  \"GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS\";\r\nexport const GET_TRAINVIEW_MAP_FAILURE = \"GET_TRAINVIEW_MAP_FAILURE\";\r\nexport const CLEAR_TRAINVIEW_MAP = \"CLEAR_TRAINVIEW_MAP\";\r\n","import {\r\n  GET_TRAINVIEW_MAP,\r\n  GET_TRAINVIEW_MAPSLIP1_SUCCESS,\r\n  GET_TRAINVIEW_MAPSLIP2_SUCCESS,\r\n  GET_TRAINVIEW_MAPSPEED1_SUCCESS,\r\n  GET_TRAINVIEW_MAPSPEED2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORT1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORT2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_TRAINVIEW_MAP_FAILURE,\r\n  CLEAR_TRAINVIEW_MAP,\r\n  GET_TRAINVIEW_GRAPHDATA,\r\n  GET_TRAINVIEW_GRAPHDATA_SUCCESS,\r\n  GET_TRAINVIEW_GRAPHDATA_FAILURE,\r\n  GET_TRAINVIEW_HISTOGRAM,\r\n  GET_TRAINVIEW_HISTOGRAM_SUCCESS,\r\n  GET_TRAINVIEW_HISTOGRAM_FAILURE,\r\n  CLEAR_TRAINVIEW_HISTOGRAM,\r\n  SET_TAB,\r\n} from \"./constants\";\r\n\r\n//Map\r\nexport const getTrainViewMap = (id, startDate, endDate, docType, bogie) => ({\r\n  type: GET_TRAINVIEW_MAP,\r\n  payload: { id, startDate, endDate, docType, bogie },\r\n});\r\n\r\nexport const getTrainViewMapSlip1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPSLIP1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapSlip2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPSLIP2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapSpeed1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPSPEED1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapSpeed2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPSPEED2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffort1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORT1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffort2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORT2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortDriving1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortDriving2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortBraking1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortBraking2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortBrakingMech1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapEffortBrakingMech2Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapDrivingTrailerVel1Success = (payload) => ({\r\n  type: GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewMapFailure = (error) => ({\r\n  type: GET_TRAINVIEW_MAP_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearTrainViewMap = (payload) => ({\r\n  type: CLEAR_TRAINVIEW_MAP,\r\n  payload,\r\n});\r\n\r\n//Time trend Graph\r\nexport const getTrainViewGraphData = (id, startDate, endDate) => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA,\r\n  payload: { id, startDate, endDate },\r\n});\r\n\r\nexport const getTrainViewGraphDataSuccess = (Graphdata) => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA_SUCCESS,\r\n  Graphdata,\r\n});\r\n\r\nexport const getTrainViewGraphDataFailure = (error) => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA_FAILURE,\r\n  error,\r\n});\r\n\r\n//Scatter plot Graph\r\nexport const getTrainViewScatterData = () => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA,\r\n});\r\n\r\nexport const getTrainViewScatterDataSuccess = (Graphdata) => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA_SUCCESS,\r\n  Graphdata,\r\n});\r\n\r\nexport const getTrainViewScatterDataFailure = (error) => ({\r\n  type: GET_TRAINVIEW_GRAPHDATA_FAILURE,\r\n  error,\r\n});\r\n\r\n//Histogram Graph\r\nexport const getTrainViewHistogram = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  zAxisSignal,\r\n  filter\r\n) => ({\r\n  type: GET_TRAINVIEW_HISTOGRAM,\r\n  payload: {\r\n    id,\r\n    startDate,\r\n    endDate,\r\n    xAxisSignal,\r\n    yAxisSignal,\r\n    zAxisSignal,\r\n    filter,\r\n  },\r\n});\r\n\r\nexport const getTrainViewHistogramSuccess = (payload) => ({\r\n  type: GET_TRAINVIEW_HISTOGRAM_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getTrainViewHistogramFailure = (error) => ({\r\n  type: GET_TRAINVIEW_HISTOGRAM_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearTrainViewHistogram = (payload) => ({\r\n  type: CLEAR_TRAINVIEW_HISTOGRAM,\r\n  payload,\r\n});\r\n\r\nexport const setTab = (payload) => ({\r\n  type: SET_TAB,\r\n  payload,\r\n});\r\n","export const SET_TIMETREND_LOADING = \"SET_TIMETREND_LOADING\";\r\nexport const GET_DETAILVIEW_TIMETREND = \"GET_DETAILVIEW_TIMETREND\";\r\nexport const GET_DETAILVIEW_TIMETREND_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETREND_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS =\r\n  \"GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS\";\r\nexport const GET_DETAILVIEW_TIMETREND_FAILURE =\r\n  \"GET_DETAILVIEW_TIMETREND_FAILURE\";\r\nexport const CLEAR_DETAILVIEW_TIMETREND = \"CLEAR_DETAILVIEW_TIMETREND\";\r\n/**************new */\r\nexport const GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS =\r\n  \"GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS\";\r\nexport const GET_DV_TT_EFFORTREFERENCE1_SUCCESS =\r\n  \"GET_DV_TT_EFFORTREFERENCE1_SUCCESS\";\r\nexport const GET_DV_TT_EFFORTREFERENCE2_SUCCESS =\r\n  \"GET_DV_TT_EFFORTREFERENCE2_SUCCESS\";\r\nexport const GET_DV_TT_SLIPPOWER1_SUCCESS = \"GET_DV_TT_SLIPPOWER1_SUCCESS\";\r\nexport const GET_DV_TT_SLIPPOWER2_SUCCESS = \"GET_DV_TT_SLIPPOWER2_SUCCESS\";\r\nexport const GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS =\r\n  \"GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS\";\r\nexport const GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS =\r\n  \"GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS\";\r\nexport const GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS =\r\n  \"GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS\";\r\nexport const GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS =\r\n  \"GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS\";\r\nexport const GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS =\r\n  \"GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS\";\r\nexport const GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS =\r\n  \"GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS\";\r\n/**************new */\r\n//-----------------------------------\r\n\r\nexport const GET_DETAILVIEW_MAP = \"GET_DETAILVIEW_MAP\";\r\nexport const GET_DETAILVIEW_MAPSLIP1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPSLIP1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPSLIP2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPSLIP2_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPSPEED1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPSPEED1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPSPEED2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPSPEED2_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORT1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORT1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORT2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORT2_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS\";\r\n\r\nexport const GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS =\r\n  \"GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS\";\r\nexport const GET_DV_MAPEFFORTREFERENCE1_SUCCESS =\r\n  \"GET_DV_MAPEFFORTREFERENCE1_SUCCESS\";\r\nexport const GET_DV_MAPEFFORTREFERENCE2_SUCCESS =\r\n  \"GET_DV_MAPEFFORTREFERENCE2_SUCCESS\";\r\nexport const GET_DV_MAPSLIPPOWER1_SUCCESS = \"GET_DV_MAPSLIPPOWER1_SUCCESS\";\r\nexport const GET_DV_MAPSLIPPOWER2_SUCCESS = \"GET_DV_MAPSLIPPOWER2_SUCCESS\";\r\nexport const GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS =\r\n  \"GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS\";\r\nexport const GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS =\r\n  \"GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS\";\r\nexport const GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS =\r\n  \"GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS\";\r\nexport const GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS =\r\n  \"GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS\";\r\nexport const GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS =\r\n  \"GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS\";\r\nexport const GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS =\r\n  \"GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS\";\r\n\r\nexport const GET_DETAILVIEW_MAP_FAILURE = \"GET_DETAILVIEW_MAP_FAILURE\";\r\nexport const CLEAR_DETAILVIEW_MAP = \"CLEAR_DETAILVIEW_MAP\";\r\n\r\nexport const GET_DETAILVIEW_MAPDATESLIDER = \"GET_DETAILVIEW_MAPDATESLIDER\";\r\nexport const GET_DETAILVIEW_MAPDATESLIDER_SUCCESS =\r\n  \"GET_DETAILVIEW_MAPDATESLIDER_SUCCESS\";\r\nexport const GET_DETAILVIEW_MAPDATESLIDER_FAILURE =\r\n  \"GET_DETAILVIEW_MAPDATESLIDER_FAILURE\";\r\nexport const CLEAR_DETAILVIEW_MAPDATESLIDER = \"CLEAR_DETAILVIEW_MAPDATESLIDER\";\r\n\r\n//-------------------------\r\n\r\nexport const GET_DETAILVIEW_SCATTERPLOT = \"GET_DETAILVIEW_SCATTERPLOT\";\r\nexport const GET_DETAILVIEW_SCATTERPLOT_SUCCESS =\r\n  \"GET_DETAILVIEW_SCATTERPLOT_SUCCESS\";\r\nexport const GET_DETAILVIEW_SCATTERPLOT_FAILURE =\r\n  \"GET_DETAILVIEW_SCATTERPLOT_FAILURE\";\r\n\r\nexport const GET_DETAILVIEW_SCATTERPLOT2_SUCCESS =\r\n  \"GET_DETAILVIEW_SCATTERPLOT2_SUCCESS\";\r\nexport const GET_DETAILVIEW_SCATTERPLOT2_FAILURE =\r\n  \"GET_DETAILVIEW_SCATTERPLOT2_FAILURE\";\r\n\r\nexport const CLEAR_DETAILVIEW_SCATTERPLOT = \"CLEAR_DETAILVIEW_SCATTERPLOT\";\r\n\r\n//-----------------------------------\r\n\r\nexport const GET_DETAILVIEW_HISTOGRAM = \"GET_DETAILVIEW_HISTOGRAM\";\r\nexport const GET_DETAILVIEW_HISTOGRAM_SUCCESS =\r\n  \"GET_DETAILVIEW_HISTOGRAM_SUCCESS\";\r\nexport const GET_DETAILVIEW_HISTOGRAM_FAILURE =\r\n  \"GET_DETAILVIEW_HISTOGRAM_FAILURE\";\r\nexport const CLEAR_DETAILVIEW_HISTOGRAM = \"CLEAR_DETAILVIEW_HISTOGRAM\";\r\n\r\n//-----------------------------------\r\n\r\nexport const SET_FILTER = \"SET_FILTER\";\r\nexport const SET_FILTER_ADVANCED = \"SET_FILTER_ADVANCED\";\r\nexport const SET_MAINTRENDSIGNAL = \"SET_MAINTRENDSIGNAL\";\r\nexport const SET_MAINSCATTERSIGNAL = \"SET_MAINSCATTERSIGNAL\";\r\nexport const ADD_OVERLAY = \"ADD_OVERLAY\";\r\nexport const CLEAR_BASICFILTER = \"CLEAR_BASICFILTER\";\r\nexport const CLEAR_ADVANCEDFILTER = \"CLEAR_ADVANCEDFILTER\";\r\nexport const SET_LOADING = \"SET_LOADING\";\r\n","import {\r\n  GET_DETAILVIEW_MAP,\r\n  GET_DETAILVIEW_MAPSLIP1_SUCCESS,\r\n  GET_DETAILVIEW_MAPSLIP2_SUCCESS,\r\n  GET_DETAILVIEW_MAPSPEED1_SUCCESS,\r\n  GET_DETAILVIEW_MAPSPEED2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORT1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORT2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_DV_MAPEFFORTREFERENCE1_SUCCESS,\r\n  GET_DV_MAPEFFORTREFERENCE2_SUCCESS,\r\n  GET_DV_MAPSLIPPOWER1_SUCCESS,\r\n  GET_DV_MAPSLIPPOWER2_SUCCESS,\r\n  GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS,\r\n  GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS,\r\n  GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  GET_DETAILVIEW_MAP_FAILURE,\r\n  CLEAR_DETAILVIEW_MAP,\r\n  GET_DETAILVIEW_TIMETREND,\r\n  GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_DV_TT_EFFORTREFERENCE1_SUCCESS,\r\n  GET_DV_TT_EFFORTREFERENCE2_SUCCESS,\r\n  GET_DV_TT_SLIPPOWER1_SUCCESS,\r\n  GET_DV_TT_SLIPPOWER2_SUCCESS,\r\n  GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS,\r\n  GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS,\r\n  GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETREND_FAILURE,\r\n  CLEAR_DETAILVIEW_TIMETREND,\r\n  GET_DETAILVIEW_SCATTERPLOT,\r\n  GET_DETAILVIEW_SCATTERPLOT_SUCCESS,\r\n  GET_DETAILVIEW_SCATTERPLOT_FAILURE,\r\n  GET_DETAILVIEW_SCATTERPLOT2_SUCCESS,\r\n  GET_DETAILVIEW_SCATTERPLOT2_FAILURE,\r\n  CLEAR_DETAILVIEW_SCATTERPLOT,\r\n  SET_FILTER,\r\n  SET_FILTER_ADVANCED,\r\n  SET_MAINTRENDSIGNAL,\r\n  SET_MAINSCATTERSIGNAL,\r\n  ADD_OVERLAY,\r\n  CLEAR_BASICFILTER,\r\n  CLEAR_ADVANCEDFILTER,\r\n  SET_LOADING,\r\n  GET_DETAILVIEW_HISTOGRAM,\r\n  GET_DETAILVIEW_HISTOGRAM_SUCCESS,\r\n  GET_DETAILVIEW_HISTOGRAM_FAILURE,\r\n  CLEAR_DETAILVIEW_HISTOGRAM,\r\n  SET_TIMETREND_LOADING,\r\n  GET_DETAILVIEW_MAPDATESLIDER,\r\n  GET_DETAILVIEW_MAPDATESLIDER_SUCCESS,\r\n  GET_DETAILVIEW_MAPDATESLIDER_FAILURE,\r\n  CLEAR_DETAILVIEW_MAPDATESLIDER,\r\n} from \"./constants\";\r\n\r\nexport const setLoading = (payload) => ({\r\n  type: SET_LOADING,\r\n  payload,\r\n});\r\n\r\nexport const setTimetrendLoading = (payload) => ({\r\n  type: SET_TIMETREND_LOADING,\r\n  payload,\r\n});\r\n\r\n//Map\r\nexport const getDetailViewMap = (id, startDate, endDate, docType, bogie) => ({\r\n  type: GET_DETAILVIEW_MAP,\r\n  payload: { id, startDate, endDate, docType, bogie },\r\n});\r\n\r\nexport const getDetailViewMapSlip1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPSLIP1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapSlip2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPSLIP2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapSpeed1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPSPEED1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapSpeed2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPSPEED2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffort1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORT1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffort2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORT2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortDriving1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortDriving2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortBraking1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortBraking2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortBrakingMech1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapEffortBrakingMech2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapDrivingTrailerVel1Success = (payload) => ({\r\n  type: GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapEffortReference1Success = (payload) => ({\r\n  type: GET_DV_MAPEFFORTREFERENCE1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapEffortReference2Success = (payload) => ({\r\n  type: GET_DV_MAPEFFORTREFERENCE2_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvMapSlipPower1Success = (payload) => ({\r\n  type: GET_DV_MAPSLIPPOWER1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapSlipPower2Success = (payload) => ({\r\n  type: GET_DV_MAPSLIPPOWER2_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvMapPowerBrakingMechanical1Success = (payload) => ({\r\n  type: GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapPowerBrakingMechanical2Success = (payload) => ({\r\n  type: GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvMapAirPressureBrakeCylinder1Success = (payload) => ({\r\n  type: GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapAirPressureBrakeCylinder2Success = (payload) => ({\r\n  type: GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvMapAmplitudeTorsionalOscillation1Success = (payload) => ({\r\n  type: GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvMapAmplitudeTorsionalOscillation2Success = (payload) => ({\r\n  type: GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapFailure = (error) => ({\r\n  type: GET_DETAILVIEW_MAP_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearDetailViewMap = (payload) => ({\r\n  type: CLEAR_DETAILVIEW_MAP,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapDateSlider = (id, startDate, endDate) => ({\r\n  type: GET_DETAILVIEW_MAPDATESLIDER,\r\n  payload: { id, startDate, endDate },\r\n});\r\n\r\nexport const getDetailViewMapDateSliderSucess = (payload) => ({\r\n  type: GET_DETAILVIEW_MAPDATESLIDER_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewMapDateSliderFailure = (error) => ({\r\n  type: GET_DETAILVIEW_MAPDATESLIDER_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearDetailViewMapDateSlider = (payload) => ({\r\n  type: CLEAR_DETAILVIEW_MAPDATESLIDER,\r\n  payload,\r\n});\r\n\r\n//TimeTrend\r\nexport const getDetailViewTimetrend = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  docType,\r\n  bogie\r\n) => ({\r\n  type: GET_DETAILVIEW_TIMETREND,\r\n  payload: { id, startDate, endDate, docType, bogie },\r\n});\r\n\r\nexport const getDetailViewTimetrendSlip1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendSlip2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendSpeed1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendSpeed2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffort1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffort2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortDriving1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortDriving2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortBraking1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortBraking2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortBrakingMech1Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendEffortBrakingMech2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtDrivingTrailerVel1Success = (payload) => ({\r\n  type: GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtEffortReference1Success = (payload) => ({\r\n  type: GET_DV_TT_EFFORTREFERENCE1_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvTtEffortReference2Success = (payload) => ({\r\n  type: GET_DV_TT_EFFORTREFERENCE2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtSlipPower1Success = (payload) => ({\r\n  type: GET_DV_TT_SLIPPOWER1_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvTtSlipPower2Success = (payload) => ({\r\n  type: GET_DV_TT_SLIPPOWER2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtPowerBrakingMechanical1Success = (payload) => ({\r\n  type: GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvTtPowerBrakingMechanical2Success = (payload) => ({\r\n  type: GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtAirPressureBrakeCylinder1Success = (payload) => ({\r\n  type: GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvTtAirPressureBrakeCylinder2Success = (payload) => ({\r\n  type: GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDvTtAmplitudeTorsionalOscillation1Success = (payload) => ({\r\n  type: GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  payload,\r\n});\r\nexport const getDvTtAmplitudeTorsionalOscillation2Success = (payload) => ({\r\n  type: GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewTimetrendFailure = (error) => ({\r\n  type: GET_DETAILVIEW_TIMETREND_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearDetailViewTimetrend = (payload) => ({\r\n  type: CLEAR_DETAILVIEW_TIMETREND,\r\n  payload,\r\n});\r\n\r\n//ScatterPlot\r\nexport const getDetailViewScatterplot = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  bogie,\r\n  scatterplotAvg\r\n) => ({\r\n  type: GET_DETAILVIEW_SCATTERPLOT,\r\n  payload: {\r\n    id,\r\n    startDate,\r\n    endDate,\r\n    xAxisSignal,\r\n    yAxisSignal,\r\n    bogie,\r\n    scatterplotAvg,\r\n  },\r\n});\r\n\r\nexport const getDetailViewScatterplotSuccess = (payload) => ({\r\n  type: GET_DETAILVIEW_SCATTERPLOT_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewScatterplotFailure = (error) => ({\r\n  type: GET_DETAILVIEW_SCATTERPLOT_FAILURE,\r\n  error,\r\n});\r\n//-----------------------------\r\nexport const getDetailViewScatterplot2Success = (payload) => ({\r\n  type: GET_DETAILVIEW_SCATTERPLOT2_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewScatterplot2Failure = (error) => ({\r\n  type: GET_DETAILVIEW_SCATTERPLOT2_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearDetailViewScatterplot = (payload) => ({\r\n  type: CLEAR_DETAILVIEW_SCATTERPLOT,\r\n  payload,\r\n});\r\n\r\n//----------------------\r\nexport const setBasicFilter = (payload) => ({\r\n  type: SET_FILTER,\r\n  payload,\r\n});\r\n\r\nexport const setAdvancedFilter = (payload) => ({\r\n  type: SET_FILTER_ADVANCED,\r\n  payload,\r\n});\r\n\r\nexport const clearBasicFilter = (payload) => ({\r\n  type: CLEAR_BASICFILTER,\r\n  payload,\r\n});\r\n\r\nexport const clearAdvancedFilter = (payload) => ({\r\n  type: CLEAR_ADVANCEDFILTER,\r\n  payload,\r\n});\r\n\r\nexport const setMainTrendSignal = (trend) => ({\r\n  type: SET_MAINTRENDSIGNAL,\r\n  payload: { trend },\r\n});\r\n\r\nexport const addOverlay = (payload) => ({\r\n  type: ADD_OVERLAY,\r\n  payload,\r\n});\r\n\r\nexport const setMainScatterSignal = (scatter) => ({\r\n  type: SET_MAINSCATTERSIGNAL,\r\n  payload: { scatter },\r\n});\r\n\r\n//Histogram\r\nexport const getDetailViewHistogram = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  zAxisSignal,\r\n  filter\r\n) => ({\r\n  type: GET_DETAILVIEW_HISTOGRAM,\r\n  payload: {\r\n    id,\r\n    startDate,\r\n    endDate,\r\n    xAxisSignal,\r\n    yAxisSignal,\r\n    zAxisSignal,\r\n    filter,\r\n  },\r\n});\r\n\r\nexport const getDetailViewHistogramSuccess = (payload) => ({\r\n  type: GET_DETAILVIEW_HISTOGRAM_SUCCESS,\r\n  payload,\r\n});\r\n\r\nexport const getDetailViewHistogramFailure = (error) => ({\r\n  type: GET_DETAILVIEW_HISTOGRAM_FAILURE,\r\n  error,\r\n});\r\n\r\nexport const clearDetailViewHistogram = (payload) => ({\r\n  type: CLEAR_DETAILVIEW_HISTOGRAM,\r\n  payload,\r\n});\r\n","import React, { Fragment, useState } from \"react\";\r\nimport ReactWindow from \"reactjs-windows\";\r\nimport \"reactjs-windows/dist/index.css\";\r\nimport { Col, Button } from \"react-bootstrap\";\r\nimport \"./styles.scss\";\r\nimport { Accordion, AccordionItem } from \"react-light-accordion\";\r\nimport \"react-light-accordion/demo/css/index.css\";\r\n\r\nclass Help extends React.Component {\r\n  constructor(...args) {\r\n    super(...args);\r\n    this.state = {\r\n      openWin1: false,\r\n    };\r\n  }\r\n\r\n  handleClick = (flag) => {\r\n    this.setState({ openWin1: flag });\r\n  };\r\n\r\n  render() {\r\n    return (\r\n      <Fragment>\r\n        <div\r\n          class={this.state.openWin1 === false ? \"helpbtn visible\" : \"hidden\"}\r\n          onClick={() => this.handleClick(true)}\r\n        >\r\n          <a href=\"#\">\r\n            <img\r\n              src={require(\"../../assets/images/abb_help.svg\")}\r\n              className={\"\"}\r\n              alt=\"Help\"\r\n            />\r\n            &nbsp;Help\r\n          </a>\r\n        </div>\r\n        {this.state.openWin1 && (\r\n          <ReactWindow\r\n            title=\"Help and tutorial\"\r\n            onClose={() => this.handleClick(false)}\r\n          >\r\n            <Accordion atomic={true}>\r\n              <AccordionItem title={\"Dashboard\"}>\r\n                <div className=\"helpcontent\">\r\n                  <div className=\"info-text\">\r\n                    This page is currently under the development and will be\r\n                    released soon.\r\n                  </div>\r\n                </div>\r\n              </AccordionItem>\r\n              <AccordionItem title={\"Train view\"}>\r\n                <div className=\"helpcontent\">\r\n                  <div className=\"info-text\">\r\n                    This page is currently under the development and will be\r\n                    released soon.\r\n                  </div>\r\n                </div>\r\n              </AccordionItem>\r\n              <AccordionItem title={\"Details view\"}>\r\n                <div className=\"helpcontent\">\r\n                  <div className=\"info-text\">\r\n                    This page is currently under the development and will be\r\n                    released soon.\r\n                  </div>\r\n                </div>\r\n              </AccordionItem>\r\n            </Accordion>\r\n          </ReactWindow>\r\n        )}\r\n      </Fragment>\r\n    );\r\n  }\r\n}\r\n\r\nexport default Help;\r\n","import React from \"react\";\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\nimport { injectIntl, intlShape, FormattedMessage } from \"react-intl\";\r\nimport messages from \"./messages\";\r\nimport Alert from \"react-bootstrap/Alert\";\r\nimport PropTypes from \"prop-types\";\r\nimport moment from \"moment\";\r\nimport momentLocalizer from \"react-widgets-moment\";\r\nimport { createStructuredSelector } from \"reselect\";\r\nimport Loading from \"../../components/Loading\";\r\nimport DashboardMap from \"../../components/DashboardMap\";\r\nimport Breadcrumb from \"../../components/Breadcrumb\";\r\nimport \"./styles.scss\";\r\nimport Datepicker from \"../../components/DatePicker\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n  fetchMapData,\r\n  fetchTrainList,\r\n  setSelectedTrain,\r\n  setDate,\r\n} from \"./actions\";\r\nimport {\r\n  startDateSelector,\r\n  endDateSelector,\r\n  mapDataSelector,\r\n  loadingSelector,\r\n  fleetDataSelector,\r\n  loadingMapSelector,\r\n} from \"./selectors\";\r\nimport FleetView from \"../../components/FleetView\";\r\nimport {\r\n  clearTrainViewMap,\r\n  clearTrainViewHistogram,\r\n} from \"../TrainViewPage/actions\";\r\nimport {\r\n  clearDetailViewMap,\r\n  clearDetailViewMapDateSlider,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n} from \"../DetailTrainPage/actions\";\r\nimport Help from \"../../components/Help\";\r\n\r\nmoment.locale(\"en\");\r\nmomentLocalizer();\r\n\r\nclass Dashboard extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n    this.state = {\r\n      lineColor: \"#abd4fd\",\r\n      lineColorHover: \"#2e92fa\",\r\n      lineSeleted: \"\",\r\n    };\r\n  }\r\n  onMouseOverEvent = (currentLine, isHover) => {\r\n    this.setState({ lineSeleted: currentLine });\r\n    if (isHover === true) {\r\n      document.getElementById(currentLine).scrollIntoView({\r\n        behavior: \"smooth\",\r\n      });\r\n    }\r\n  };\r\n\r\n  onMouseOutEvent = () => {\r\n    this.setState({ lineSeleted: \"\" });\r\n  };\r\n\r\n  componentDidMount() {\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    this.props.getMapData(startDate, endDate);\r\n    this.props.getTrainList(startDate, endDate);\r\n  }\r\n\r\n  applyDateChange = async (start_Date, end_Date, trainSelect = true) => {\r\n    if (trainSelect)\r\n      if (\r\n        new Date(start_Date).valueOf() ==\r\n          new Date(this.props.startDate.replace(/%3A/g, \":\")).valueOf() &&\r\n        new Date(end_Date).valueOf() ==\r\n          new Date(this.props.endDate.replace(/%3A/g, \":\")).valueOf()\r\n      ) {\r\n        return false;\r\n      }\r\n    await this.props.setDate(start_Date, end_Date);\r\n\r\n    await this.props.clearTrainViewMap();\r\n    await this.props.clearTrainViewHistogram();\r\n    await this.props.clearDetailViewMap();\r\n    await this.props.clearDetailViewMapDateSlider();\r\n    await this.props.clearDetailViewTimetrend();\r\n    await this.props.clearDetailViewScatterplot();\r\n    await this.props.clearDetailViewHistogram();\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    this.props.getMapData(startDate, endDate);\r\n    this.props.getTrainList(startDate, endDate);\r\n  };\r\n\r\n  onTrainSelect = async (selectedTrain) => {\r\n    await this.props.setSelectedTrain(selectedTrain);\r\n    await this.props.clearTrainViewMap();\r\n    await this.props.clearTrainViewHistogram();\r\n    await this.props.clearDetailViewMap();\r\n    await this.props.clearDetailViewMapDateSlider();\r\n    await this.props.clearDetailViewTimetrend();\r\n    await this.props.clearDetailViewScatterplot();\r\n    await this.props.clearDetailViewHistogram();\r\n    this.props.history.push(\"/TrainViewPage\");\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      loading,\r\n      mapdata,\r\n      fleetData,\r\n      startDate,\r\n      endDate,\r\n      loadingMap,\r\n    } = this.props;\r\n    return (\r\n      <div className=\"page-home\">\r\n        <Help />\r\n        <Breadcrumb\r\n          BreadcrumbIcon={\r\n            <img\r\n              src={require(\"../../assets/images/home.svg\")}\r\n              className={\"\"}\r\n              alt=\"Home\"\r\n            />\r\n          }\r\n          BreadcrumbPath={<FormattedMessage {...messages.header} />}\r\n          NumberofTrains={fleetData && fleetData.length}\r\n        />\r\n        <Row>\r\n          <Col md={12}>\r\n            <Datepicker\r\n              onApplyClick={this.applyDateChange}\r\n              startDate={startDate}\r\n              endDate={endDate}\r\n            />\r\n          </Col>\r\n          {/* <Col md={3}> { JSON.stringify(this.state)} <hr /></Col> */}\r\n          {mapdata === null || loading === true || loadingMap === true ? (\r\n            <Col md={12}>\r\n              <Loading />\r\n            </Col>\r\n          ) : mapdata.length > 0 ? (\r\n            <React.Fragment>\r\n              <Col\r\n                sm={12}\r\n                md={3}\r\n                className=\"full-width noLeftpadding noRightpadding newmargintop \"\r\n              >\r\n                <FleetView\r\n                  trainData={fleetData}\r\n                  fetching={loading}\r\n                  onHover={this.onMouseOverEvent}\r\n                  onHoverOut={this.onMouseOutEvent}\r\n                  onTrainSelect={this.onTrainSelect}\r\n                  routeSeleted={this.state.lineSeleted}\r\n                />\r\n              </Col>\r\n              <Col\r\n                sm={12}\r\n                md={9}\r\n                className=\"full-width noRightpadding newmargintop\"\r\n              >\r\n                <DashboardMap\r\n                  mapPath={mapdata}\r\n                  onHover={this.onMouseOverEvent}\r\n                  onHoverOut={this.onMouseOutEvent}\r\n                  routeColor={this.state.lineColor}\r\n                  routeColorHover={this.state.lineColorHover}\r\n                  routeSeleted={this.state.lineSeleted}\r\n                />\r\n              </Col>\r\n            </React.Fragment>\r\n          ) : (\r\n            <React.Fragment>\r\n              <Col\r\n                sm={12}\r\n                md={3}\r\n                className=\"full-width noLeftpadding noRightpadding newmargintop\"\r\n              >\r\n                <FleetView\r\n                  trainData={fleetData}\r\n                  fetching={loading}\r\n                  onHover={this.onMouseOverEvent}\r\n                  onHoverOut={this.onMouseOutEvent}\r\n                  onTrainSelect={this.onTrainSelect}\r\n                />\r\n              </Col>\r\n\r\n              <Col\r\n                sm={12}\r\n                md={9}\r\n                className=\"full-width noRightpadding newmargintop \"\r\n              >\r\n                <div className=\"nodatanotificationcontainer\">\r\n                  <Alert variant=\"danger\" id=\"nodatanotification\" dismissible>\r\n                    <p className=\"nodatanotificationcontent\">\r\n                      No data recorded on selected day.\r\n                    </p>\r\n                  </Alert>\r\n                </div>\r\n                <div className=\"disabledcontent\">\r\n                  <DashboardMap\r\n                    mapPath={mapdata}\r\n                    onHover={this.onMouseOverEvent}\r\n                    onHoverOut={this.onMouseOutEvent}\r\n                    routeColor={this.state.lineColor}\r\n                    routeColorHover={this.state.lineColorHover}\r\n                    routeSeleted={this.state.lineSeleted}\r\n                  />\r\n                </div>\r\n              </Col>\r\n            </React.Fragment>\r\n          )}\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nDashboard.defaultProps = {};\r\n\r\nDashboard.propTypes = {\r\n  formatedData: PropTypes.any,\r\n  loading: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n  loading: loadingSelector(),\r\n  startDate: startDateSelector(),\r\n  endDate: endDateSelector(),\r\n  mapdata: mapDataSelector(),\r\n  fleetData: fleetDataSelector(),\r\n  loadingMap: loadingMapSelector(),\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n  getTrainList: fetchTrainList,\r\n  getMapData: fetchMapData,\r\n  setSelectedTrain,\r\n  setDate,\r\n  clearDetailViewMap,\r\n  clearDetailViewMapDateSlider,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n  clearTrainViewMap,\r\n  clearTrainViewHistogram,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard);\r\n","import React from \"react\";\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\n// Not found page component\r\nexport default class NotFound extends React.Component {\r\n  // render\r\n  render() {\r\n    return (\r\n      <div>\r\n        <Col md={12}>\r\n          <div className=\"page-content-div\">\r\n            <h1> Page not found. </h1>\r\n          </div>\r\n        </Col>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","/*\r\n *\r\n * ErrorPages\r\n *\r\n */\r\n\r\nimport React from \"react\";\r\n//import { connect } from 'react-redux';\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\nrequire(\"./styles.scss\");\r\n\r\nexport class NetworkError extends React.Component {\r\n  // eslint-disable-line react/prefer-stateless-function\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    // this.onClickToGo = this.onClickToGo.bind(this);\r\n    //  this.getMessage = this.getMessage.bind(this);\r\n  }\r\n\r\n  componentDidMount() {\r\n    if (navigator.onLine) {\r\n      window.location.pathname = \"/\";\r\n    }\r\n  }\r\n\r\n  render() {\r\n    return (\r\n      <div>\r\n        {/* <Row>\r\n          <Col md={12}>\r\n            <div className=\"page-header\">\r\n              <span> WWO Monitoring </span>\r\n            </div>\r\n          </Col>\r\n        </Row> */}\r\n\r\n        <Col md={12}>\r\n          <div className=\"page-content-div\">\r\n            <h1> Network error </h1>\r\n            <h4>\r\n              Please check your network connectivity and try loading the page\r\n              again.\r\n            </h4>\r\n            <Button\r\n              bsStyle=\"link\"\r\n              className=\" btn btn-primary btn-sm\"\r\n              onClick={() => (window.location.pathname = \"/\")}\r\n            >\r\n              Click here to try again\r\n            </Button>\r\n          </div>\r\n        </Col>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default NetworkError;\r\n","/*\r\n *\r\n * ErrorPages\r\n *\r\n */\r\n\r\nimport React from \"react\";\r\n//import { connect } from 'react-redux';\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\nrequire(\"./styles.scss\");\r\n\r\nexport class ServerError extends React.Component {\r\n  // eslint-disable-line react/prefer-stateless-function\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    // this.onClickToGo = this.onClickToGo.bind(this);\r\n    //  this.getMessage = this.getMessage.bind(this);\r\n  }\r\n\r\n  componentDidMount() {}\r\n\r\n  render() {\r\n    return (\r\n      <div>\r\n        {/* <Row>\r\n          <Col md={12}>\r\n            <div className=\"page-header\">\r\n              <span> WWO Monitoring </span>\r\n            </div>\r\n          </Col>\r\n        </Row> */}\r\n\r\n        <Col md={12}>\r\n          <div className=\"page-content-div\">\r\n            <h1> Server error </h1>\r\n            <h4>\r\n              Sorry there is some issue in server, please try again after some\r\n              time.\r\n            </h4>\r\n            <Button\r\n              bsStyle=\"link\"\r\n              className=\" btn btn-primary btn-sm\"\r\n              onClick={() => (window.location.pathname = \"/\")}\r\n            >\r\n              Click here to try again\r\n            </Button>\r\n          </div>\r\n        </Col>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default ServerError;\r\n","import Highcharts from \"highcharts/highstock\";\r\n//import { histogramdata } from \"../../mockdata/detailtrainviewhistogram\";\r\nimport exportChart from \"../../assets/images/exportChart.svg\";\r\nimport debug from \"debug\";\r\nimport Moment from \"moment\";\r\n\r\nexport let xMin, xMax;\r\nexport const colors = [\r\n  \"#5abfae\", //Teal 40\r\n  \"#ED5739\", //  Orange 50\r\n  \"#005CA3\", //Blue 70\r\n  \"#d98f45\", //Gold 40\r\n  \"#1e6119\", //Green 70\r\n  \"#a30005\", // Red 80\r\n  \"#686868\", //Grey 60\r\n  \"#753B00\", //Gold 70\r\n  \"#E64997\", // Magenta 50\r\n  \"#b5aa0d\", //Yellow 40\r\n];\r\n\r\nexport function checkChatValues(chartValues) {\r\n  let isVisible = \"\";\r\n  for (let i = 0; i < chartValues.length - 1; i++) {\r\n    if (\r\n      chartValues[i].config.label.indexOf(\"B1\") !== -1 &&\r\n      chartValues[i + 1].config.label.indexOf(\"B2\") !== -1\r\n    ) {\r\n      isVisible = false;\r\n    } else {\r\n      isVisible = true;\r\n    }\r\n  }\r\n  return isVisible;\r\n}\r\n\r\nexport function getSingleTrendData(\r\n  selectedOverlays,\r\n  chart,\r\n  selectedMain,\r\n  filter,\r\n  advanced_filter,\r\n  loadMoreFunc\r\n) {\r\n  const ranges = [];\r\n  const average = [];\r\n  const configs = [];\r\n  const colors = [\r\n    \"#5abfae\", //Teal 40\r\n    \"#ED5739\", //  Orange 50\r\n    \"#005CA3\", //Blue 70\r\n    \"#d98f45\", //Gold 40\r\n    \"#1e6119\", //Green 70\r\n    \"#a30005\", // Red 80\r\n    \"#686868\", //Grey 60\r\n    \"#753B00\", //Gold 70\r\n    \"#E64997\", // Magenta 50\r\n    \"#b5aa0d\", //Yellow 40\r\n  ];\r\n  let rangedata = [],\r\n    averages = [],\r\n    xaxisvalue = [],\r\n    seriesValues = [],\r\n    xAxis,\r\n    yAxis = [];\r\n\r\n  console.log(\r\n    \"Filter: \",\r\n    filter.operation,\r\n    \" Chart: \",\r\n    chart,\r\n    \" SelectedMain: \",\r\n    selectedMain\r\n  );\r\n\r\n  let chartValues = chart;\r\n  console.log(\"hideB2Y\", checkChatValues(chartValues), chartValues);\r\n  /*chartValues.push(...chart.filter(item => item.config.label === selectedMain));\r\n  selectedOverlays &&\r\n    selectedOverlays.map(value =>\r\n      chartValues.push(...chart.filter(item => item.config.label === value))\r\n    );*/\r\n\r\n  for (let j = 0; j < chartValues.length; j += 1) {\r\n    rangedata = [];\r\n    averages = [];\r\n    xaxisvalue = [];\r\n    for (let i = 0; i < chartValues[j].data.length; i += 1) {\r\n      const item = chartValues[j].data[i];\r\n      // if (!item.value) {\r\n      let formatedDate = Moment.utc(item.ts).format(\"DD.MM.YYYY HH:mm:ss\");\r\n      xaxisvalue.push([formatedDate]);\r\n      averages.push([formatedDate, item.avg]);\r\n      rangedata.push([formatedDate, item.min, item.max]);\r\n      // } else {\r\n      //   averages.push([item.timestamp, item.value]);\r\n      // }\r\n    }\r\n    let current, previous, next, rangecurrent, rangeprevious, rangenext;\r\n    averages.forEach(function (item, index) {\r\n      current = item[1];\r\n      // console.log(\"Current: \" + item[1]);\r\n      if (index > 0) {\r\n        previous = averages[index - 1][1];\r\n        // console.log(\"Previous: \" + averages[index - 1][1]);\r\n      }\r\n      if (index < averages.length - 1) {\r\n        next = averages[index + 1][1];\r\n        // console.log(\"Next: \" + averages[index + 1][1]);\r\n      }\r\n      if (current !== null && previous === null && next === null) {\r\n        averages[index] = {\r\n          y: item[1],\r\n          marker: {\r\n            enabled: true,\r\n          },\r\n        };\r\n      }\r\n    });\r\n    rangedata.forEach(function (item, index) {\r\n      rangecurrent = item[1];\r\n      // console.log(\"Current: \" + item[1]);\r\n      if (index > 0) {\r\n        rangeprevious = rangedata[index - 1][1];\r\n        // console.log(\"Previous: \" + averages[index - 1][1]);\r\n      }\r\n      if (index < rangedata.length - 1) {\r\n        rangenext = rangedata[index + 1][1];\r\n        // console.log(\"Next: \" + averages[index + 1][1]);\r\n      }\r\n      if (\r\n        rangecurrent !== null &&\r\n        rangeprevious === null &&\r\n        rangenext === null\r\n      ) {\r\n        rangedata[index] = {\r\n          low: item[1],\r\n          high: item[2],\r\n          marker: {\r\n            enabled: true,\r\n          },\r\n        };\r\n      }\r\n    });\r\n    seriesValues.push(\r\n      {\r\n        name: chartValues[j].config.label,\r\n        type: \"line\",\r\n        color: colors[j],\r\n        data: averages,\r\n        marker: {\r\n          enabled: false,\r\n        },\r\n        tooltip: {\r\n          valueSuffix: \" \" + chartValues[j].config.unit,\r\n        },\r\n        yAxis: j,\r\n        boostThreshold: 0,\r\n        turboThreshold: Number.MAX_VALUE,\r\n        zIndex: 1,\r\n      },\r\n      {\r\n        name: chartValues[j].config.label,\r\n        type: \"arearange\",\r\n        data: rangedata,\r\n        lineWidth: 0,\r\n        linkedTo: \":previous\",\r\n        color: colors[j],\r\n        fillOpacity: 0.3,\r\n        zIndex: 0,\r\n        marker: {\r\n          enabled: false,\r\n        },\r\n        tooltip: {\r\n          valueSuffix: \" \" + chartValues[j].config.unit,\r\n        },\r\n        yAxis: j,\r\n        boostThreshold: 0,\r\n        turboThreshold: Number.MAX_VALUE,\r\n      }\r\n    );\r\n\r\n    yAxis.push({\r\n      opposite: j !== 0,\r\n      // startOnTick: false,\r\n      min:\r\n        chartValues[j].config.label.indexOf(\"Torsional Osc. Ampl.\") !== -1\r\n          ? 0\r\n          : chartValues[j].config.label.indexOf(\"Power Mechanical Brake\") !== -1\r\n          ? -1500\r\n          : chartValues[j].config.label.indexOf(\"Power Slip\") !== -1\r\n          ? -300\r\n          : chartValues[j].config.label.indexOf(\"Slip\") !== -1\r\n          ? -15\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"Speed at Wheel\") !== -1\r\n          ? 0\r\n          : chartValues[j].config.label.indexOf(\"Speed Driving Trailer\") !== -1\r\n          ? 0\r\n          : null,\r\n      max:\r\n        chartValues[j].config.label.indexOf(\"Torsional Osc. Ampl.\") !== -1\r\n          ? 100\r\n          : chartValues[j].config.label.indexOf(\"Power Mechanical Brake\") !== -1\r\n          ? 1500\r\n          : chartValues[j].config.label.indexOf(\"Power Slip\") !== -1\r\n          ? 300\r\n          : chartValues[j].config.label.indexOf(\"Slip\") !== -1\r\n          ? 15\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"Speed at Wheel\") !== -1\r\n          ? 225\r\n          : chartValues[j].config.label.indexOf(\"Speed Driving Trailer\") !== -1\r\n          ? 225\r\n          : null,\r\n      tickInterval:\r\n        chartValues[j].config.label.indexOf(\"Effort Mech. Brake\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? 27\r\n          : undefined,\r\n      tickAmount: 7,\r\n      visible:\r\n        chartValues[j].config.label.indexOf(\"B2\") !== -1 &&\r\n        checkChatValues(chartValues) === false\r\n          ? false\r\n          : true,\r\n      title: {\r\n        enabled: false,\r\n        text: `${chartValues[j].config.label} ${chartValues[j].config.unit}`,\r\n        style: {\r\n          color: j !== 0 ? colors[j] : colors[0],\r\n        },\r\n      },\r\n      labels: {\r\n        format: `{value} ${chartValues[j].config.unit}`,\r\n        style: {\r\n          color: j !== 0 ? colors[j] : colors[0],\r\n        },\r\n      },\r\n      id: `${chartValues[j].config.label}`,\r\n    });\r\n\r\n    xAxis = [\r\n      {\r\n        categories: xaxisvalue,\r\n        crosshair: true,\r\n        gridLineWidth: 1,\r\n        gridLineColor: \"#e9e9e9\",\r\n        tickInterval: 10,\r\n        crosshair: {\r\n          width: 1,\r\n          color: \"#0b73c2\",\r\n        },\r\n        minTickInterval: 5,\r\n        events: {\r\n          afterSetExtremes: function (event) {\r\n            const currentChart = event.target;\r\n            if (currentChart && currentChart.chart) {\r\n              const { min, max } = currentChart.chart.xAxis[0].getExtremes();\r\n              if (\r\n                typeof event.trigger !== \"undefined\" &&\r\n                event.trigger === \"zoom\"\r\n              ) {\r\n                xMin = min;\r\n                xMax = max;\r\n                if (\r\n                  event.trigger === \"zoom\" &&\r\n                  event.min === event.dataMin &&\r\n                  event.max === event.dataMax\r\n                ) {\r\n                  // loadMoreFunc(\r\n                  //   currentChart.chart.xAxis[0].categories[Math.floor(xMin)],\r\n                  //   currentChart.chart.xAxis[0].categories[Math.ceil(xMax)],\r\n                  //   false\r\n                  // );\r\n                } else {\r\n                  loadMoreFunc(\r\n                    currentChart.chart.xAxis[0].categories[Math.floor(xMin)],\r\n                    currentChart.chart.xAxis[0].categories[Math.ceil(xMax)],\r\n                    true\r\n                  );\r\n                }\r\n              }\r\n              // if (min != 0) {\r\n              //   xMin = min;\r\n              //   xMax = max;\r\n              // }\r\n\r\n              let resetbtn = document.getElementsByClassName(\r\n                \"highcharts-reset-zoom\"\r\n              );\r\n\r\n              if (resetbtn.length > 0) {\r\n                resetbtn[0].style.display = \"none\";\r\n              }\r\n            }\r\n          },\r\n        },\r\n        labels: {\r\n          // formatter: function() {\r\n          //   return Highcharts.dateFormat(\r\n          //     \"%d.%m.%Y %H:%M:%S\",\r\n          //     this.value * 1000\r\n          //   ); // milliseconds not seconds\r\n          // }\r\n        },\r\n      },\r\n    ];\r\n  }\r\n\r\n  return {\r\n    xAxis,\r\n    yAxis,\r\n    series: seriesValues,\r\n  };\r\n}\r\n\r\nexport function getTrendChart(\r\n  selectedOverlays,\r\n  chart,\r\n  selectedMain,\r\n  filter,\r\n  advanced_filter,\r\n  loadMoreFunc\r\n) {\r\n  console.log(\"Timetrend Func()\");\r\n  const data = getSingleTrendData(\r\n    selectedOverlays,\r\n    chart,\r\n    selectedMain,\r\n    filter,\r\n    advanced_filter,\r\n    loadMoreFunc\r\n  );\r\n  debug(\"dev\")(\"getTrendChart:data\", data);\r\n  let options = {\r\n    chart: {\r\n      name: \"trendData\",\r\n      plotBackgroundColor: null,\r\n      plotBorderWidth: null,\r\n      plotShadow: false,\r\n      zoomType: \"x\",\r\n      panning: true,\r\n      panKey: \"shift\",\r\n      marginBottom: 60,\r\n      // borderColor: \"#f03040\",\r\n      // borderWidth: 1,\r\n      height: 600,\r\n      marginBottom: 100,\r\n      events: {\r\n        load: function () {\r\n          document.getElementById(\"chartLoader\").style.display = \"none\";\r\n        },\r\n      },\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    title: false,\r\n    // {\r\n    //   // text: `<span class=\"sampleinterval\">(${chart[0].config.samptime} sampling)</span>`,\r\n    //   // align: \"right\",\r\n    //   // y: 35,\r\n\r\n    // },\r\n    subtitle: {\r\n      text: `<span class=\"sampleinterval\">(${chart[0].config.samptime} sampling)</span>`,\r\n      align: \"right\",\r\n      y: 5,\r\n    },\r\n    xAxis: data.xAxis,\r\n    yAxis: data.yAxis,\r\n    tooltip: {\r\n      shared: false,\r\n    },\r\n    plotOptions: {\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n        point: {\r\n          events: {\r\n            click: function () {\r\n              console.log(\"Time: \", this, this.series.name);\r\n              sessionStorage.setItem(\"clickedTimeStamp\", this.category);\r\n              sessionStorage.setItem(\r\n                \"clickedTimeStampForRunSlider\",\r\n                this.category\r\n              );\r\n              sessionStorage.setItem(\r\n                \"clickedSignal\",\r\n                this.series.name.replace(/B1|B2/gi, \"\")\r\n              );\r\n              if (\r\n                sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !==\r\n                  null &&\r\n                sessionStorage.getItem(\"clickedTimeStamp\") !== null &&\r\n                sessionStorage.getItem(\"clickedSignal\") !== null\r\n              ) {\r\n                document.getElementById(\"controlled-tab-tab-MAP_TYPE\").click();\r\n              }\r\n            },\r\n          },\r\n        },\r\n      },\r\n      line: {\r\n        allowPointSelect: false,\r\n        cursor: \"pointer\",\r\n        dataLabels: {\r\n          enabled: false,\r\n        },\r\n        showInLegend: true,\r\n        gapSize: 5,\r\n      },\r\n      arearange: {\r\n        cursor: \"pointer\",\r\n      },\r\n    },\r\n    legend: {\r\n      enabled: true,\r\n      align: \"left\",\r\n      verticalAlign: \"top\",\r\n      padding: 0,\r\n      itemMarginTop: 10,\r\n      itemMarginBottom: 10,\r\n      //layout: \"horizontal\",\r\n      x: 0,\r\n      y: 0,\r\n      //floating: true,\r\n      symbolPadding: 10,\r\n      symbolWidth: 50,\r\n      itemStyle: {\r\n        color: \"#000000\",\r\n        fontWeight: \"bold\",\r\n        fontSize: \"16px\",\r\n      },\r\n      backgroundColor:\r\n        (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||\r\n        \"rgba(255,255,255,0.25)\",\r\n    },\r\n    series: data.series,\r\n    exporting: {\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 5,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n\r\nexport function getScatterSingleSignal(data, trendsParam, props, lang) {\r\n  console.log(\"Scatterplot Func()\");\r\n  if (!data || !props || !props.selectedScatter) return null;\r\n  debug(\"dev\")(\"getScatterSingleSignal\", data, trendsParam, props);\r\n  const current = [];\r\n  let config;\r\n  let j = 1;\r\n  let color = 0;\r\n  data.forEach((c) => {\r\n    // if (c.config.code.toUpperCase() === props.selectedScatter.toUpperCase()) {\r\n    //   const color = c.color ? c.color : Highcharts.getOptions().colors[j];\r\n    //   current.push({\r\n    //     name: c.series[0].name,\r\n    //     data: c.series[0].data,\r\n    //     color,\r\n    //     turboThreshold: 0,\r\n    //     marker: {\r\n    //       fillColor: color,\r\n    //       radius: 2\r\n    //     }\r\n    //   });\r\n    //   ({ config } = c);\r\n    //   j += 1;\r\n    // }\r\n\r\n    current.push({\r\n      name: c.config.bnm,\r\n      color: colors[color],\r\n      data: c.data,\r\n      boostThreshold: 10000,\r\n      turboThreshold: Number.MAX_VALUE,\r\n      marker: {\r\n        radius: 3,\r\n      },\r\n    });\r\n    j += 1;\r\n    color += 1;\r\n  });\r\n\r\n  console.log(\"check data for scatter\", current);\r\n  const options = {\r\n    chart: {\r\n      name: \"scatterData\",\r\n      type: \"scatter\",\r\n      marginTop: 70,\r\n      enableMouseTracking: true,\r\n      plotBackgroundColor: null,\r\n      plotBorderWidth: null,\r\n      plotShadow: false,\r\n      zoomType: \"xy\",\r\n      shadow: false,\r\n      resetZoomButton: {\r\n        position: {\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          x: -60,\r\n          y: 10,\r\n        },\r\n        relativeTo: \"chart\",\r\n      },\r\n      // borderColor: \"#f03040\",\r\n      // borderWidth: 1,\r\n      height: 600,\r\n      events: {\r\n        load: function () {\r\n          document.getElementById(\"chartLoader\").style.display = \"none\";\r\n        },\r\n      },\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    //trends: \"Slip vs Speed\",\r\n    title: {\r\n      enabled: true,\r\n      text: `<b>${data[0].documentType}</b><br><span class=\"sampleinterval\">(${data[0].resampleInterval} sampling)</span>`,\r\n    },\r\n    xAxis: {\r\n      className: \"scatter-x-axis\",\r\n      title: {\r\n        text: `<b>${data[0].config.xsn} [${data[0].config.xsu}]</b>`,\r\n        align: \"middle\",\r\n      },\r\n      startOnTick: true,\r\n      endOnTick: true,\r\n      showLastLabel: true,\r\n      labels: {\r\n        y: 25,\r\n      },\r\n    },\r\n    yAxis: {\r\n      className: \"scatter-y-axis\",\r\n      title: {\r\n        text: `<b>${data[0].config.ysn} [${data[0].config.ysu}]</b>`,\r\n        align: \"middle\",\r\n        // rotation: 0,\r\n        // y: -15,\r\n        // x: -5,\r\n        // align: \"high\"\r\n        // offset: 0\r\n      },\r\n    },\r\n    legend: {\r\n      enabled: true,\r\n      layout: \"horizontal\",\r\n      align: \"left\",\r\n      verticalAlign: \"top\",\r\n      //x: 150,\r\n      y: 20,\r\n      floating: true,\r\n      backgroundColor: Highcharts.defaultOptions.chart.backgroundColor,\r\n      borderWidth: 0,\r\n      itemStyle: {\r\n        color: \"#000000\",\r\n        fontWeight: \"bold\",\r\n        fontSize: \"16px\",\r\n      },\r\n    },\r\n    plotOptions: {\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n        point: {\r\n          events: {\r\n            click: function () {\r\n              console.log(\"14se: \", this, data[0].config.ysn);\r\n              sessionStorage.setItem(\r\n                \"clickedTimeStamp\",\r\n                Moment.utc(this.ts).format(\"DD.MM.YYYY HH:mm:ss\")\r\n              );\r\n              sessionStorage.setItem(\r\n                \"clickedTimeStampForRunSlider\",\r\n                Moment.utc(this.ts).format(\"DD.MM.YYYY HH:mm:ss\")\r\n              );\r\n              sessionStorage.setItem(\"clickedSignal\", data[0].config.ysn);\r\n              if (\r\n                sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !==\r\n                  null &&\r\n                sessionStorage.getItem(\"clickedTimeStamp\") !== null &&\r\n                sessionStorage.getItem(\"clickedSignal\") !== null\r\n              ) {\r\n                document.getElementById(\"controlled-tab-tab-MAP_TYPE\").click();\r\n              }\r\n            },\r\n          },\r\n        },\r\n      },\r\n      scatter: {\r\n        cursor: \"pointer\",\r\n        states: {\r\n          // inactive: {\r\n          //   opacity: 1\r\n          // }\r\n        },\r\n        /*tooltip: {\r\n          headerFormat: \"<b>{series.name}</b><br>\",\r\n          pointFormat: `${data[0].config.xSignalName}: <b>{point.x} ${\r\n            data[0].config.xSignalUnit\r\n          }</b><br />${data[0].config.ySignalName}: <b>{point.y}${\r\n            data[0].config.ySignalUnit\r\n          } </b><br />${\"Date/Time\"}: <b>{point.timeStamp}</b>`\r\n        }*/\r\n      },\r\n    },\r\n    tooltip: {\r\n      formatter: function () {\r\n        return `<b>${this.point.series.name}</b><br>\r\n      ${data[0].config.xsn}: <b>${this.point.x} ${\r\n          data[0].config.xsu\r\n        }</b><br />${data[0].config.ysn}: <b>${this.point.y} ${\r\n          data[0].config.ysu\r\n        } </b><br />${\"Date/Time\"}:<b> ${Moment.utc(this.point.ts).format(\r\n          \"DD.MM.YYYY HH:mm:ss\"\r\n        )}</b>`;\r\n      },\r\n    },\r\n    series: current,\r\n    /* series: [\r\n      {\r\n        name: \"Bogie1\",\r\n        //color: 'rgba(223, 83, 83, .5)',\r\n        data: data[1].data\r\n      }\r\n    ],*/\r\n\r\n    exporting: {\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 3,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n\r\nexport function getHistogramSingleSignal(seriesData) {\r\n  // if (!chart || !props) return null;\r\n  //debug('dev')('Histogram:', chart, props);\r\n  console.log(\"Histogram Func()\");\r\n  let title;\r\n  let unit;\r\n  const options = {\r\n    chart: {\r\n      type: \"heatmap\",\r\n      marginTop: 57,\r\n      events: {\r\n        load: function () {\r\n          document.getElementById(\"chartLoader\").style.display = \"none\";\r\n        },\r\n      },\r\n      //inverted: true\r\n      zoomType: \"xy\",\r\n      panning: true,\r\n      panKey: \"shift\",\r\n      plotBorderWidth: 1,\r\n      height: 600,\r\n      events: {\r\n        load: function () {\r\n          document.getElementById(\"chartLoader\").style.display = \"none\";\r\n        },\r\n      },\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    title: {\r\n      text: `<b> ${seriesData.doc}</b>`,\r\n    },\r\n    xAxis: {\r\n      // min: 0,\r\n      // max: 225,\r\n      title: {\r\n        text: `<b> ${seriesData.cfg.xsn} [${seriesData.cfg.xsu}]</b>`,\r\n      },\r\n      minRange: 20,\r\n      gridZIndex: 0,\r\n      gridLineWidth: 0,\r\n      gridLineColor: \"#dbdbdb\",\r\n      // tickInterval: 10\r\n    },\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    yAxis: {\r\n      // min: -161,\r\n      // max: 161,\r\n      title: {\r\n        text: `<b> ${seriesData.cfg.ysn} [${seriesData.cfg.ysu}]</b>`,\r\n      },\r\n      minPadding: 0,\r\n      maxPadding: 0,\r\n      startOnTick: false,\r\n      endOnTick: false,\r\n      //tickPositions: [0, 6, 12, 18, 24],\r\n      minRange: 20,\r\n      // tickInterval: 10,\r\n      tickWidth: 1,\r\n      gridZIndex: 0,\r\n      gridLineWidth: 0,\r\n      gridLineColor: \"#dbdbdb\",\r\n      reversed: false,\r\n    },\r\n    colorAxis: {\r\n      stops: [\r\n        [0, \"#ffffff\"],\r\n        [0.1, \"#bfedbb\"],\r\n        [0.2, \"#98d694\"],\r\n        [0.3, \"#0ca919\"],\r\n        [0.4, \"#d6c918\"],\r\n        [0.5, \"#ffd800\"],\r\n        [0.6, \"#ff7300\"],\r\n        [0.7, \"#ff4754\"],\r\n        [0.8, \"#f03040\"],\r\n        [0.9, \"#e12e2e\"],\r\n        [1, \"#cc0815\"],\r\n      ],\r\n      reversed: false,\r\n      // min: -6,\r\n      //  max: 5,\r\n      // minColor: \"#dadada\",\r\n      // maxColor: \"#c4463a\",\r\n      startOnTick: false,\r\n      endOnTick: true,\r\n      labels: false,\r\n      // labels: {\r\n      //   format: `{value} [s]`\r\n      // }\r\n    },\r\n    series: [\r\n      {\r\n        // boostThreshold: 11653,\r\n        //colsize: 10,\r\n        //borderIndex: 0,\r\n        //borderColor: \"#e5e5e5\",\r\n        //borderWidth: 0,\r\n        colsize: seriesData.bin,\r\n        rowsize: seriesData.bin,\r\n        turboThreshold: Number.MAX_VALUE,\r\n        nullColor: \"#ffffff\",\r\n        data: seriesData.dat,\r\n        states: {\r\n          hover: {\r\n            enabled: false,\r\n          },\r\n        },\r\n        dataLabels: {\r\n          enabled: false,\r\n          color: \"#000000\",\r\n        },\r\n      },\r\n    ],\r\n    tooltip: {\r\n      formatter: function () {\r\n        return `${seriesData.cfg.xsn}: <b>${this.point.x} ${\r\n          seriesData.cfg.xsu\r\n        }</b><br />\r\n      ${seriesData.cfg.ysn}: <b> ${this.point.y} ${\r\n          seriesData.cfg.ysu\r\n        }</b><br />${\"Occurrence\"}: <b>${this.point.nlv} ${\"s\"}</b>`;\r\n      },\r\n    },\r\n    legend: {\r\n      align: \"right\",\r\n      layout: \"vertical\",\r\n      verticalAlign: \"top\",\r\n      y: 40,\r\n\r\n      symbolWidth: 22,\r\n      symbolHeight: 485,\r\n    },\r\n    plotOptions: {\r\n      heatmap: {\r\n        cursor: \"zoom-in\",\r\n      },\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n      },\r\n    },\r\n    exporting: {\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 3,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n","/*\r\n * DetailTrainView Messages\r\n *\r\n * This contains all the text for the DetailTrainView component.\r\n */\r\nimport { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  header: {\r\n    id: \"app.containers.DetailTrainView.header\",\r\n    defaultMessage: \"Dashboard/Train view/Details view\"\r\n  }\r\n});\r\n","import { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  clickDragText: {\r\n    id: \"app.components.GraphTimeSelector.clickDragText\",\r\n    defaultMessage: \"Click and drag to zoom in.\",\r\n  },\r\n});\r\n","export const overlaySignalOptions = [\r\n  \"Speed at Wheel\",\r\n\"Speed Driving Trailer\",\r\n\"Slip\",\r\n\"Effort\",\r\n\"Effort Reference\",\r\n\"Effort Mech. Brake\",\r\n\"Power Slip\",\r\n\"Power Mechanical Brake\",\r\n\"Pressure Brake Cyl.\",\r\n\"Torsional Osc. Ampl.\",\r\n];\r\n\r\nexport const mainSignalTrendOptions = [\r\n  \"Speed at Wheel\",\r\n\"Speed Driving Trailer\",\r\n\"Slip\",\r\n\"Effort\",\r\n\"Effort Reference\",\r\n\"Effort Mech. Brake\",\r\n\"Power Slip\",\r\n\"Power Mechanical Brake\",\r\n\"Pressure Brake Cyl.\",\r\n\"Torsional Osc. Ampl.\",\r\n];\r\n\r\nexport const mainSignalScatterOptions = [\r\n  \"Speed Driving Trailer / Slip\",\r\n\"Speed Driving Trailer / Effort\",\r\n\"Speed Driving Trailer / Effort Mech. Brake\",\r\n\"Speed Driving Trailer / Torsional Osc. Ampl.\",\r\n\"Slip / Effort\",\r\n\"Slip / Torsional Osc. Ampl.\",\r\n\"Slip / Effort Mech. Brake\",\r\n\"Effort / Torsional Osc. Ampl.\",\r\n];\r\n/*export const overlaySignalOptions = [\r\n  \"Slip\",\r\n  \"Speed\",\r\n  \"Effort\",\r\n  //\"EffortDriving\",\r\n  //\"EffortBraking\",\r\n  \"EffortBrakingMechanical\",\r\n  \"DrivingTrailerVel\",\r\n  \"EffortReference\",\r\n  \"SlipPower\",\r\n  \"PowerBrakingMechanical\",\r\n  \"AirPressureBrakeCylinder\",\r\n  \"AmplitudeTorsionalOscillation\",\r\n];*/\r\n\r\n/*export const mainSignalTrendOptions = [\r\n  \"Slip\",\r\n  \"Speed\",\r\n  \"Effort\",\r\n  //\"EffortDriving\",\r\n  //\"EffortBraking\",\r\n  \"EffortBrakingMechanical\",\r\n  \"DrivingTrailerVel\",\r\n  \"EffortReference\",\r\n  \"SlipPower\",\r\n  \"PowerBrakingMechanical\",\r\n  \"AirPressureBrakeCylinder\",\r\n  \"AmplitudeTorsionalOscillation\",\r\n];*/\r\n\r\n/*export const mainSignalScatterOptions = [\r\n  \"Speed/Slip\",\r\n  \"Speed/Effort\",\r\n  \"Speed/EffortBrakingMechanical\",\r\n  \"Slip/Effort\",\r\n  \"Speed/AmplitudeTorsionalOscillation\",\r\n  \"Slip/AmplitudeTorsionalOscillation\",\r\n  \"Effort/AmplitudeTorsionalOscillation\",\r\n  \"Slip/EffortBrakingMechanical\",\r\n];*/\r\n\r\nexport const xAxisSignalHistogramOptions = [\r\n  // \"Slip\",\r\n  \"Speed\",\r\n  \"Effort\",\r\n  //\"EffortBraking\",\r\n  //\"EffortBrakingMechanical\"\r\n];\r\nexport const yAxisSignalHistogramOptions = [\r\n  // \"Slip\",\r\n  \"Speed\",\r\n  \"Effort\",\r\n  // \"EffortBraking\",\r\n  // \"EffortBrakingMechanical\"\r\n];\r\nexport const zAxisSignalHistogramOptions = [\r\n  \"Occurrence\",\r\n  // \"SlipEnergy\"\r\n  //\"Slip Power(Energy/Time)\"\r\n];\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\nimport Col from \"react-bootstrap/Col\";\r\n\r\nconst TitleBar = ({ trainno, onClickRedirectMap, id }) => {\r\n  return (\r\n    <Col md={12} className=\"containertitlebar\">\r\n      <img\r\n        src={require(\"../../../assets/images/subway.svg\")}\r\n        className=\"icontrain\"\r\n      />\r\n      <span className=\"text\">{trainno}</span>\r\n      <img src={require(\"../../../assets/images/Menu.svg\")} className=\"menu\" />\r\n      <img\r\n        src={require(\"../../../assets/images/icon-config.svg\")}\r\n        className=\"iconconfig\"\r\n      />\r\n      <span className=\"btn-link-custom-con\">\r\n        <button className=\"btn btn-link-custom\" onClick={onClickRedirectMap}>\r\n          {id === \"trainview\" ? \"Go to detailed map\" : \"Go to train view\"}\r\n        </button>\r\n      </span>\r\n    </Col>\r\n  );\r\n};\r\n\r\nexport default TitleBar;\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\n\r\nconst FilterDetails = ({ basicFilter, advancedFilter }) => {\r\n  let strOperation = \"Operation mode: \",\r\n    strTemperature = \"Temperature: \",\r\n    strDrivingtrailervelocity = \"Driving trailer velocity: \",\r\n    strSander = \"Sander: \",\r\n    strTOprotection = \"Torsional oscillation protection: \",\r\n    strAntislipbrake = \"Anti slip brake: \";\r\n  // strAdhesioncontrol = \"Adhesion Control: \",\r\n  // strSlingbrake = \"Sling brake: \";\r\n  return (\r\n    <div className=\"filtersTitle\">\r\n      <span className=\"basicfilter\">{\"Basic filter\"}</span>\r\n\r\n      <span className=\"weathercondition\">\r\n        <img\r\n          src={require(\"../../../assets/images/wet.svg\")}\r\n          className={\"weatherconditionicon\"}\r\n        />\r\n        {\"Weather condition: \" + basicFilter.weather}\r\n      </span>\r\n\r\n      <span className=\"operationmode\">\r\n        <img\r\n          src={require(\"../../../assets/images/magnet.svg\")}\r\n          className={\"operationmodeicon\"}\r\n        />\r\n        {basicFilter.operation &&\r\n          basicFilter.operation.sort().map((item) => {\r\n            if (item === 1) {\r\n              strOperation += \"Pulling, cabin 1 in front; \";\r\n            }\r\n            if (item === 2) {\r\n              strOperation += \"Pulling, cabin 2 in front; \";\r\n            }\r\n            if (item === 3) {\r\n              strOperation += \"Pushing, cabin 1 in front; \";\r\n            }\r\n            if (item === 4) {\r\n              strOperation += \"Pushing, cabin 2 in front; \";\r\n            }\r\n            if (item === 5) {\r\n              strOperation += \"Standstill; \";\r\n            }\r\n          })}\r\n        {basicFilter.operation && basicFilter.operation.length === 6\r\n          ? (strOperation = \"Operation mode: All \")\r\n          : strOperation}\r\n      </span>\r\n\r\n      <span className=\"bogie\">\r\n        <img\r\n          src={require(\"../../../assets/images/generator.svg\")}\r\n          className={\"bogieicon\"}\r\n        />\r\n        {basicFilter.bogie &&\r\n         basicFilter.bogie === 1\r\n         ? (\"Bogie: 1\")\r\n         : basicFilter.bogie === 2\r\n         ? (\"Bogie: 2\")\r\n         : (\"Bogie: All\")}\r\n      </span>\r\n\r\n      <span className=\"dashline\">{\" | \"}</span>\r\n      <span className=\"advancefilter\">{\"Advanced filter\"}</span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.temperature &&\r\n          advancedFilter.temperature.sort().map((item) => {\r\n            if (item === 1) {\r\n              strTemperature += \"Low; \";\r\n            }\r\n            if (item === 2) {\r\n              strTemperature += \"Medium; \";\r\n            }\r\n            if (item === 3) {\r\n              strTemperature += \"High; \";\r\n            }\r\n          })}\r\n        {strTemperature}\r\n      </span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.drivingtrailervelocity &&\r\n        advancedFilter.drivingtrailervelocity === 1\r\n          ? (strDrivingtrailervelocity += \"Available; \")\r\n          : advancedFilter.drivingtrailervelocity === 0\r\n          ? (strDrivingtrailervelocity += \"Not Available; \")\r\n          : (strDrivingtrailervelocity += \"All; \")}\r\n      </span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.sander && advancedFilter.sander === 1\r\n          ? (strSander += \"Active; \")\r\n          : advancedFilter.sander === 0\r\n          ? (strSander += \"Inactive; \")\r\n          : (strSander += \"All; \")}\r\n      </span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.toprotection && advancedFilter.toprotection === 1\r\n          ? (strTOprotection += \"Active; \")\r\n          : advancedFilter.toprotection === 0\r\n          ? (strTOprotection += \"Inactive; \")\r\n          : (strTOprotection += \"All; \")}\r\n      </span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.antislipbrake && advancedFilter.antislipbrake === 1\r\n          ? (strAntislipbrake += \"Active; \")\r\n          : advancedFilter.antislipbrake === 0\r\n          ? (strAntislipbrake += \"Inactive; \")\r\n          : (strAntislipbrake += \"All; \")}\r\n      </span>\r\n      {/* <span className=\"advancefilterValues\">\r\n        {advancedFilter.adhesioncontrol && advancedFilter.adhesioncontrol === 1\r\n          ? (strAdhesioncontrol += \"Active; \")\r\n          : advancedFilter.adhesioncontrol === 0\r\n          ? (strAdhesioncontrol += \"Inactive; \")\r\n          : (strAdhesioncontrol += \"All; \")}\r\n      </span>\r\n      <span className=\"advancefilterValues\">\r\n        {advancedFilter.slingbrake && advancedFilter.slingbrake === 1\r\n          ? (strSlingbrake += \"Active; \")\r\n          : advancedFilter.slingbrake === 0\r\n          ? (strSlingbrake += \"Inactive; \")\r\n          : (strSlingbrake += \"All; \")}\r\n      </span> */}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FilterDetails;\r\n","import { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  mainSignalText: {\r\n    id: \"app.components.GraphOverlay.mainSignalText\",\r\n    defaultMessage: \"Main signal\"\r\n  },\r\n  addOverlaysText: {\r\n    id: \"app.components.GraphOverlay.addOverlaysText\",\r\n    defaultMessage: \"Add overlay signal(s)\"\r\n  },\r\n  xAxisSignalText: {\r\n    id: \"app.components.GraphOverlay.xAxisSignalText\",\r\n    defaultMessage: \"X- axis signal\"\r\n  },\r\n  yAxisSignalText: {\r\n    id: \"app.components.GraphOverlay.yAxisSignalText\",\r\n    defaultMessage: \"Y- axis signal\"\r\n  },\r\n  zAxisSignalText: {\r\n    id: \"app.components.GraphOverlay.zAxisSignalText\",\r\n    defaultMessage: \"Z- axis signal\"\r\n  }\r\n});\r\n","import React from \"react\";\r\nimport \"./styles.scss\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport DropdownList from \"react-widgets/lib/DropdownList\";\r\nimport Multiselect from \"react-widgets/lib/Multiselect\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { injectIntl, FormattedMessage } from \"react-intl\";\r\nimport messages from \"./messages\";\r\n\r\n// const overlaySignalOptions = [\r\n//   \"Torsional oscillation control\",\r\n//   \"Adhesion control\",\r\n//   \"Sling break\",\r\n//   \"Sand break\",\r\n//   \"BT velocity\",\r\n//   \"Bogi 1\",\r\n//   \"Bogi 2\",\r\n//   \"1st position bogie\",\r\n//   \"2nd position bogie\"\r\n// ];\r\n\r\n// let mainSignalOptions = [\r\n//   \"Torsional oscillation control\",\r\n//   \"Adhesion control\",\r\n//   \"Sling break\",\r\n//   \"Sand break\",\r\n//   \"BT velocity\",\r\n//   \"Bogi 1\",\r\n//   \"Bogi 2\"\r\n// ];\r\n\r\nclass SignalSelector extends React.PureComponent {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n    this.state = {\r\n      open: false,\r\n      selectedSignals: null,\r\n    };\r\n  }\r\n\r\n  backButton = () => this.props.history.push(\"/TrainViewPage\");\r\n  // this function is to restrict max number of selected item\r\n  /* numberOfSignalsSelected = signals => {\r\n    this.setState({ selectedSignals: signals.length });\r\n    if (signals.length > 1) {\r\n      this.setState({ open: false });\r\n    }\r\n  };\r\n\r\n  onToggle = isOpen => {\r\n    if (isOpen === false) {\r\n      this.setState({ open: false });\r\n    } else if (this.props.selectedOverlays !== null) {\r\n      if (isOpen === true && this.props.selectedOverlays.length <= 1) {\r\n        this.setState({ open: true });\r\n      }\r\n    } else if (\r\n      isOpen === true &&\r\n      this.state.selectedSignals <= 1 &&\r\n      this.props.selectedOverlays === null\r\n    ) {\r\n      this.setState({ open: true });\r\n    } else {\r\n      this.setState({ open: false });\r\n    }\r\n  }; */\r\n  // this function is to restrict max number of selected item\r\n  render() {\r\n    return (\r\n      <Row className=\"containerselectsignal justify-content-between\">\r\n        {this.props.chartType === \"TREND_TYPE\" && (\r\n          <Col md={3}>\r\n            <div className=\"mainsignal\">\r\n              <div className=\"selectsignal\">\r\n                <FormattedMessage {...messages.mainSignalText} />\r\n              </div>\r\n              <DropdownList\r\n                data={this.props.mainSignalValues}\r\n                value={this.props.selectedMain}\r\n                className=\"dropdownmainsignal\"\r\n                onChange={this.props.clickMainSignal}\r\n              />\r\n            </div>\r\n          </Col>\r\n        )}\r\n        {this.props.chartType === \"SCATTER_TYPE\" && (\r\n          <React.Fragment>\r\n            <Col md={5}>\r\n              <div className=\"mainsignal\">\r\n                <div className=\"selectsignal\">\r\n                  <FormattedMessage {...messages.mainSignalText} />\r\n                </div>\r\n                <DropdownList\r\n                  data={this.props.mainSignalValues}\r\n                  defaultValue={\"Speed Driving Trailer / Slip\"}\r\n                  className=\"dropdownmainsignal increasedwidth\"\r\n                  onChange={this.props.clickMainSignal}\r\n                />\r\n              </div>\r\n            </Col>\r\n            <Col md={4} className={\"noLeftpadding\"}>\r\n              <div className={\"toggle-button-container\"}>\r\n                <button\r\n                  type=\"button\"\r\n                  class={\r\n                    this.props.scatterplotAvg === true\r\n                      ? \"toggle-button activeLightBlue\"\r\n                      : \"toggle-button\"\r\n                  }\r\n                  onClick={() =>\r\n                    this.props.handleScatterplotAvgMaxChange(\"Average\")\r\n                  }\r\n                >\r\n                  Average value\r\n                </button>\r\n                <button\r\n                  type=\"button\"\r\n                  class={\r\n                    this.props.scatterplotAvg === true\r\n                      ? \"toggle-button\"\r\n                      : \"toggle-button activeLightBlue\"\r\n                  }\r\n                  onClick={() =>\r\n                    this.props.handleScatterplotAvgMaxChange(\"Maximum\")\r\n                  }\r\n                >\r\n                  Maximum value\r\n                </button>\r\n              </div>\r\n            </Col>\r\n          </React.Fragment>\r\n        )}\r\n        {this.props.chartType === \"TREND_TYPE\" && (\r\n          <Col md={8}>\r\n            <div className=\"overlaysignal\">\r\n              <div className=\"addsignal\">\r\n                <FormattedMessage {...messages.addOverlaysText} />\r\n              </div>\r\n              <Multiselect\r\n                placeholder=\"None\"\r\n                // textField=\"label\"\r\n                // valueField=\"code\"\r\n                /* onToggle={this.onToggle}\r\n                 open={this.state.open}\r\n                 onChange={items => {\r\n                   this.props.clickOverlaySignal(items);\r\n                   this.numberOfSignalsSelected(items);\r\n                 }}*/\r\n                onChange={this.props.clickOverlaySignal}\r\n                disabled={[this.props.selectedMain]}\r\n                data={this.props.overlaySignalValues}\r\n                value={\r\n                  this.props.selectedOverlays !== []\r\n                    ? this.props.selectedOverlays\r\n                    : []\r\n                }\r\n                className={\"dropdownoverlaysignal\"}\r\n              />\r\n            </div>\r\n          </Col>\r\n        )}\r\n        {/* for histogram dropdownLists */}\r\n\r\n        {this.props.chartType === \"HISTOGRAM_TYPE\" && (\r\n          <React.Fragment>\r\n            <Col md={3}>\r\n              <div className=\"mainsignal\">\r\n                <div className=\"selectsignal\">\r\n                  <FormattedMessage {...messages.xAxisSignalText} />\r\n                </div>\r\n                <DropdownList\r\n                  data={this.props.mainSignalValues}\r\n                  // value={\"Speed\"}\r\n                  defaultValue={\"Speed\"}\r\n                  name=\"xAxisSignal\"\r\n                  className=\"dropdownmainsignal\"\r\n                  disabled={[this.props.selectedSignalsHistogram.yAxisSignal]}\r\n                  //onChange={this.props.updateHistogram}\r\n                  onChange={this.props.handleHistogramDropdownChange(\r\n                    \"xAxisSignal\"\r\n                  )}\r\n                />\r\n              </div>\r\n            </Col>\r\n            <Col md={3}>\r\n              <div className=\"mainsignal\">\r\n                <div className=\"selectsignal\">\r\n                  <FormattedMessage {...messages.yAxisSignalText} />\r\n                </div>\r\n                <DropdownList\r\n                  data={this.props.yaxisSignalValues}\r\n                  defaultValue={\"Effort\"}\r\n                  className=\"dropdownmainsignal\"\r\n                  name=\"yAxisSignal\"\r\n                  onChange={this.props.handleHistogramDropdownChange(\r\n                    \"yAxisSignal\"\r\n                  )}\r\n                  disabled={[this.props.selectedSignalsHistogram.xAxisSignal]}\r\n                />\r\n              </div>\r\n            </Col>\r\n            <Col md={4}>\r\n              <div className=\"mainsignal\">\r\n                <div className=\"selectsignal\">\r\n                  <FormattedMessage {...messages.zAxisSignalText} />\r\n                </div>\r\n                <DropdownList\r\n                  data={this.props.zaxisSignalValues}\r\n                  defaultValue={\"Occurrence\"}\r\n                  className=\"dropdownmainsignal\"\r\n                  name=\"zAxisSignal\"\r\n                  onChange={this.props.handleHistogramDropdownChange(\r\n                    \"zAxisSignal\"\r\n                  )}\r\n                />\r\n              </div>\r\n            </Col>\r\n            <Col md={1} style={{ paddingTop: \"27px\" }}>\r\n              <button\r\n                className=\"btn  btn-sm  primarColorBtn\"\r\n                onClick={this.props.getHistogramDataBasedonUserSelection}\r\n              >\r\n                Apply\r\n              </button>\r\n            </Col>\r\n          </React.Fragment>\r\n        )}\r\n        <Col md={1}>\r\n          {/* <button\r\n            title=\"Go to train view\"\r\n            onClick={this.backButton}\r\n            className=\"matrixIcon\"\r\n          >\r\n            <img\r\n              src={require(\"../../../assets/images/matrix.svg\")}\r\n              className=\"download-icon\"\r\n            />\r\n          </button> */}\r\n        </Col>\r\n      </Row>\r\n    );\r\n  }\r\n}\r\n\r\nexport default withRouter(SignalSelector);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Highcharts from \"highcharts\";\r\nimport HC_exporting from \"highcharts/modules/exporting\";\r\nimport HC_heatMap from \"highcharts/modules/heatmap\";\r\nimport HC_boost_canvas from \"highcharts/modules/boost-canvas\";\r\nimport HC_boost from \"highcharts/modules/boost\";\r\nimport highchartsMore from \"highcharts/highcharts-more\";\r\n\r\nimport \"./styles.scss\";\r\nimport {\r\n  getHistogramSingleSignal,\r\n  getScatterSingleSignal,\r\n  getTrendChart,\r\n  getMultiTrendChart,\r\n  xMin,\r\n  xMax,\r\n} from \"./function\";\r\n\r\nhighchartsMore(Highcharts);\r\nHC_exporting(Highcharts);\r\nHC_heatMap(Highcharts);\r\nHC_boost_canvas(Highcharts);\r\nHC_boost(Highcharts);\r\n\r\nconst tempdata = [\r\n  { x: -1, y: 161, value: -3.0 },\r\n  { x: 0, y: 161, value: -3.0 },\r\n  { x: 1, y: 161, value: -3.0 },\r\n  { x: 2, y: 161, value: -3.0 },\r\n  { x: 3, y: 161, value: -3.0 },\r\n  { x: 4, y: 161, value: -3.0 },\r\n  { x: 5, y: 161, value: -3.0 },\r\n  { x: 6, y: 161, value: -3.0 },\r\n  { x: 7, y: 161, value: -3.0 },\r\n  { x: 8, y: 161, value: -3.0 },\r\n  { x: 9, y: 161, value: -3.0 },\r\n  { x: 10, y: 161, value: -3.0 },\r\n  { x: 11, y: 161, value: -3.0 },\r\n  { x: 12, y: 161, value: -3.0 },\r\n  { x: 13, y: 161, value: -3.0 },\r\n  { x: 14, y: 161, value: -3.0 },\r\n  { x: 15, y: 161, value: -3.0 },\r\n  { x: 16, y: 161, value: -3.0 },\r\n  { x: 17, y: 161, value: -3.0 },\r\n  { x: 18, y: 161, value: -3.0 },\r\n];\r\n\r\nexport default class SingleGraph extends React.Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n    const options = this.initGraph(props);\r\n    this.state = { options };\r\n  }\r\n\r\n  componentDidMount() {\r\n    setTimeout(() => {\r\n      this.draw(this.props);\r\n    }, 0);\r\n    //this.chart.reflow();\r\n  }\r\n\r\n  componentWillReceiveProps(nextProps) {\r\n    //this.chart.destroy();\r\n  }\r\n\r\n  shouldComponentUpdate(nextProps) {\r\n    if (\r\n      this.props.basicFilter != nextProps.basicFilter ||\r\n      this.props.advancedFilter != nextProps.advancedFilter ||\r\n      this.props.selectedMainTrend != nextProps.selectedMainTrend ||\r\n      this.props.selectedOverlaysTrend != nextProps.selectedOverlaysTrend ||\r\n      (this.props.chartType === \"SCATTER_TYPE\" &&\r\n        this.props.data != nextProps.data) ||\r\n      (this.props.chartType === \"TREND_TYPE\" &&\r\n        this.props.data.length != nextProps.data.length)\r\n    ) {\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  componentDidUpdate() {\r\n    //this.chart.destroy();\r\n    const options = this.initGraph();\r\n    this.state = {\r\n      options,\r\n    };\r\n    this.draw(this.props);\r\n    this.zoomIn();\r\n  }\r\n\r\n  componentWillUnmount() {\r\n    if (this.chart !== undefined) {\r\n      this.chart.zoomOut();\r\n      console.log(\"componentunmountcalled\");\r\n    }\r\n    //  this.chart.destroy();\r\n    setTimeout(() => {\r\n      this.chart.destroy();\r\n    }, 0);\r\n  }\r\n\r\n  draw(props) {\r\n    /* (function(Highcharts) {\r\n      let each = Highcharts.each;\r\n\r\n      Highcharts.wrap(Highcharts.Legend.prototype, \"renderItem\", function(\r\n        proceed,\r\n        item\r\n      ) {\r\n        proceed.call(this, item);\r\n\r\n        let isPoint = !!item.series,\r\n          collection = isPoint ? item.series.points : this.chart.series,\r\n          groups = isPoint ? [\"graphic\"] : [\"group\", \"markerGroup\"],\r\n          element = item.legendGroup.element;\r\n\r\n        element.onmouseover = function() {\r\n          each(collection, function(seriesItem) {\r\n            if (seriesItem !== item) {\r\n              each(groups, function(group) {\r\n                seriesItem[group].animate(\r\n                  {\r\n                    opacity: 0.25\r\n                  },\r\n                  {\r\n                    duration: 150\r\n                  }\r\n                );\r\n              });\r\n            }\r\n          });\r\n        };\r\n        element.onmouseout = function() {\r\n          each(collection, function(seriesItem) {\r\n            if (seriesItem !== item) {\r\n              each(groups, function(group) {\r\n                seriesItem[group].animate(\r\n                  {\r\n                    opacity: 1\r\n                  },\r\n                  {\r\n                    duration: 50\r\n                  }\r\n                );\r\n              });\r\n            }\r\n          });\r\n        };\r\n      });\r\n    })(Highcharts);*/\r\n    this.chart = Highcharts.chart(this.container, { ...this.state.options });\r\n    this.chart.reflow();\r\n  }\r\n\r\n  initGraph = (props) => {\r\n    let options;\r\n    if (this.props.chartType === \"TREND_TYPE\") {\r\n      options = getTrendChart(\r\n        this.props.selectedOverlaysTrend,\r\n        this.props.data,\r\n        this.props.selectedMainTrend,\r\n        this.props.basicFilter,\r\n        this.props.advancedFilter,\r\n        this.props.onLoadMoreGraph\r\n      );\r\n    } else if (this.props.chartType === \"SCATTER_TYPE\") {\r\n      options = getScatterSingleSignal(\r\n        this.props.data,\r\n        \"trends\",\r\n        { selectedScatter: this.props.selectedMainScatter },\r\n        { timestamp: \"lang\" }\r\n      );\r\n    } else if (this.props.chartType === \"HISTOGRAM_TYPE\") {\r\n      options = getHistogramSingleSignal(this.props.data);\r\n    }\r\n\r\n    if (Highcharts.getOptions().exporting) {\r\n      const contextButton = Highcharts.getOptions().exporting.buttons\r\n        .contextButton; // eslint-disable-line\r\n      contextButton.menuItems = contextButton.menuItems.filter((item) => {\r\n        return item !== \"downloadPDF\";\r\n      });\r\n    }\r\n\r\n    return options;\r\n  };\r\n\r\n  zoomIn = () => {\r\n    console.log(\"chartzoom\", xMin, xMax);\r\n    if (this.chart && this.chart.options.chart.name === \"trendData\") {\r\n      if (xMin != 0 && xMin != undefined) {\r\n        this.chart.showResetZoom();\r\n        this.chart.xAxis[0].setExtremes(xMin, xMax);\r\n      }\r\n\r\n      // const { min, max, dataMin, dataMax } = this.chart.xAxis[0].getExtremes();\r\n      // console.log(\"min, max, dataMin, dataMax\", min, max, dataMin, dataMax);\r\n      // if (min === dataMin && max === dataMax) {\r\n      //   console.log(\"min, max, dataMin, dataMax\", min, max, dataMin, dataMax);\r\n      //   this.chart.showResetZoom();\r\n      // }\r\n    }\r\n  };\r\n\r\n  onHistogramXaxisChange = (value) => {\r\n    console.log(\"dropdown\", this.chart.series);\r\n\r\n    switch (value) {\r\n      case \"Slip\":\r\n        this.chart.series[0].setData(tempdata, false);\r\n        this.chart.redraw();\r\n        break;\r\n      default:\r\n        this.chart.series[0].setData(this.props.data, false);\r\n        this.chart.redraw();\r\n    }\r\n  };\r\n  // onHistogramYaxisChange = value => {\r\n  //   this.chart.series[0].setData(tempdatatwo, true);\r\n  // };\r\n\r\n  render() {\r\n    console.log(\"checking chart type-MainFunc(): \", this.props.data);\r\n\r\n    //  const { chart, errorCharts } = this.props;\r\n    /*if (errorCharts) {\r\n      return (\r\n        <ErrorComponent\r\n          error={errorCharts}\r\n          status={formatMessage({ id: \"application.sorryText\" })}\r\n          statusText={formatMessage(\r\n            { id: \"application.backendError\" },\r\n            {\r\n              code: errorCharts[0] ? errorCharts[0].code : errorCharts.status,\r\n              detail: errorCharts[0]\r\n                ? errorCharts[0].message\r\n                : errorCharts.statusText\r\n            }\r\n          )}\r\n        />\r\n      );\r\n    }*/\r\n\r\n    return (\r\n      <div\r\n        id=\"single_chart_123\"\r\n        className=\"chart\"\r\n        ref={(ref) => (this.container = ref)}\r\n        //onClick={}\r\n      />\r\n    );\r\n  }\r\n}\r\n\r\nSingleGraph.defaultProps = {};\r\n\r\nSingleGraph.propTypes = {\r\n  chart: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  overlayData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  selectedOverlays: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  selectedGraph: PropTypes.string,\r\n  onLoadGraph: PropTypes.func.isRequired,\r\n  startTimeDate: PropTypes.object,\r\n  endTimeDate: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n  errorCharts: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\r\n  isLoading: PropTypes.bool.isRequired,\r\n  chartType: PropTypes.number.isRequired,\r\n};\r\n","//export const GOOGLE_MAPS_API_KEY = \"\";\r\n//export const GOOGLE_MAPS_API_KEY = \"AIzaSyAEKVqg_a4NBG2w06CITsQV2KU8J9hxQfQ\"; // with lucas account\r\nexport const GOOGLE_MAPS_API_KEY = \"AIzaSyAxWU6jPK4Xte6JnC-R44i1uTHEAPajrMw\"; // with vender account\r\nexport const googleMapURL = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_MAPS_API_KEY}`;\r\n\r\nexport const googleMapCustomStyle = [\r\n  {\r\n    featureType: \"administrative.land_parcel\",\r\n    elementType: \"labels\",\r\n    stylers: [\r\n      {\r\n        visibility: \"off\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"poi\",\r\n    elementType: \"labels.text\",\r\n    stylers: [\r\n      {\r\n        visibility: \"off\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.highway\",\r\n    elementType: \"geometry.fill\",\r\n    stylers: [\r\n      {\r\n        color: \"#fcf9dd\",\r\n      },\r\n      {\r\n        lightness: 60,\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.highway\",\r\n    elementType: \"geometry.stroke\",\r\n    stylers: [\r\n      {\r\n        color: \"#dedfc1\",\r\n      },\r\n    ],\r\n  },\r\n  {\r\n    featureType: \"road.local\",\r\n    elementType: \"labels\",\r\n    stylers: [\r\n      {\r\n        visibility: \"off\",\r\n      },\r\n    ],\r\n  },\r\n];\r\n","/*global google*/\r\nimport React, { Component } from \"react\";\r\nimport Moment from \"moment\";\r\nimport {\r\n  withScriptjs,\r\n  withGoogleMap,\r\n  GoogleMap,\r\n  Polyline,\r\n  Marker,\r\n  //InfoWindow\r\n} from \"react-google-maps\";\r\nimport PropTypes from \"prop-types\";\r\nimport Alert from \"react-bootstrap/Alert\";\r\nimport { googleMapURL, googleMapCustomStyle } from \"../Googlemapkey\";\r\nlet prevPosition = undefined,\r\n  prevPositionIsvalidFalse = undefined,\r\n  gpsValid = 1;\r\nlet startPosition = null,\r\n  startFlag = true;\r\n\r\nconst DetailViewGoogleMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      defaultCenter={{ lat: 46.94809, lng: 7.44744 }}\r\n      /*defaultCenter={\r\n        props.positions[~~(props.positions.length / 2)].positions[1]\r\n      }*/\r\n      /*center={\r\n        props.markerPosition.lat === 0 && startPosition !== null\r\n          ? startPosition\r\n          : props.markerPosition\r\n      }*/\r\n      //mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n      }}\r\n    >\r\n      {\r\n        ((gpsValid = 1),\r\n        (startFlag = true),\r\n        (startPosition = null),\r\n        (prevPosition = undefined),\r\n        (prevPositionIsvalidFalse = undefined))\r\n      }\r\n      {props.positions.map((obj, index) => {\r\n        if (index !== 0 && obj.gvd === 1) {\r\n          //&& props.positions.length - 1 !== index\r\n          // if (gpsValid === 0) {\r\n          //   gpsValid = 2;\r\n          //   return;\r\n          // }\r\n          if (gpsValid === 0 || gpsValid === 2) {\r\n            gpsValid = 1;\r\n            if (\r\n              prevPositionIsvalidFalse !== undefined &&\r\n              prevPositionIsvalidFalse[0].lat !== 0\r\n            ) {\r\n              //let currentColor = \"#C8C8C8\"; //LightGray\r\n              prevPositionIsvalidFalse[1].lat = obj.pos[1].lat;\r\n              prevPositionIsvalidFalse[1].lng = obj.pos[1].lng;\r\n              return (\r\n                <Polyline\r\n                  path={prevPositionIsvalidFalse}\r\n                  options={{\r\n                    strokeColor: \"#C8C8C8\", //LightGray\r\n                    strokeWeight: 4,\r\n                  }}\r\n                />\r\n              );\r\n            } else {\r\n              return;\r\n            }\r\n          }\r\n\r\n          let currentColor = props.basicFilter.bogie === 3 ? obj.cla : obj.clr;\r\n\r\n          if (currentColor === \"green\") currentColor = \"#0CA919\";\r\n          else if (currentColor === \"yellow\") currentColor = \"#FFD800\";\r\n          else if (currentColor === \"red\") currentColor = \"#F03040\";\r\n          else if (currentColor === \"gray\") currentColor = \"#545454\";\r\n\r\n          if (currentColor && obj.pos) {\r\n            if (\r\n              props.basicFilter.operation &&\r\n              !props.basicFilter.operation.find((item) => item == obj.ftr.opm)\r\n            )\r\n              currentColor = \"#C8C8C8\"; //LightGray\r\n            /*\r\n            //without any logic for testing\r\n            return (\r\n              <Polyline\r\n                path={obj.positions}\r\n                options={{\r\n                  strokeColor: currentColor,\r\n                  strokeWeight: 3\r\n                }}\r\n              />\r\n            );*/\r\n            if (obj.pos[0].lat !== 0 && obj.pos[1].lat !== 0) {\r\n              prevPositionIsvalidFalse = obj.pos;\r\n              prevPosition = undefined;\r\n              if (startFlag) {\r\n                startPosition = obj.pos[0];\r\n                startFlag = false;\r\n              }\r\n              return (\r\n                <Polyline\r\n                  path={obj.pos}\r\n                  options={{\r\n                    strokeColor: currentColor,\r\n                    strokeWeight: 4,\r\n                  }}\r\n                />\r\n              );\r\n            } else if (obj.pos[0].lat !== 0 && obj.pos[1].lat === 0) {\r\n              prevPosition = obj.pos;\r\n              prevPositionIsvalidFalse = undefined;\r\n              console.log(\"10\");\r\n            } else if (obj.pos[0].lat === 0 && obj.pos[1].lat !== 0) {\r\n              if (prevPosition !== undefined) {\r\n                prevPosition[1].lat = obj.pos[1].lat;\r\n                prevPosition[1].lng = obj.pos[1].lng;\r\n                console.log(\"01\");\r\n                return (\r\n                  <Polyline\r\n                    path={prevPosition}\r\n                    options={{\r\n                      strokeColor: currentColor,\r\n                      strokeWeight: 4,\r\n                    }}\r\n                  />\r\n                );\r\n              }\r\n            }\r\n          }\r\n        } else if (index !== 0 && obj.gvd === 0) {\r\n          gpsValid = 0;\r\n        }\r\n      })}\r\n      <Marker\r\n        //position={startPosition === null ? props.markerPosition : startPosition}\r\n        position={\r\n          props.markerPosition.lat === 0 && startPosition !== null\r\n            ? startPosition\r\n            : props.markerPosition\r\n        }\r\n        defaultAnimation={google.maps.Animation.DROP}\r\n        // options={{\r\n        //   icon: {\r\n        //     url: require(\"../../assets/images/Arrow_direction.png\"),\r\n        //     scaledSize: { width: 40, height: 40 },\r\n        //     anchor: { x: 20, y: 20 },\r\n        //   }\r\n        // }}\r\n        // draggable={true}\r\n        options={{\r\n          icon: {\r\n            url: require(\"../../assets/images/Google_Train_icon.svg\"),\r\n            scale: 5,\r\n            fillColor: \"#2e92fa\",\r\n            fillOpacity: 0.9,\r\n            strokeWeight: 0,\r\n            anchor: { x: 15, y: 15 },\r\n            //rotation: -45\r\n          },\r\n        }}\r\n      >\r\n        {/* {props.isOpen && (\r\n          <InfoWindow>\r\n            <span>\r\n              {\" \"}\r\n              {JSON.stringify(\r\n                props.markerPosition.lat === 0 || props.markerPosition.lng === 0\r\n                  ? props.positions[2].positions[1]\r\n                  : props.markerPosition\r\n              )}{\" \"}\r\n            </span>\r\n          </InfoWindow>\r\n        )} */}\r\n      </Marker>\r\n    </GoogleMap>\r\n  ))\r\n);\r\n\r\nconst NoDashbordMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      defaultCenter={{ lat: 46.948393, lng: 7.435987 }}\r\n      //mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n      }}\r\n    />\r\n  ))\r\n);\r\n\r\nclass DetailViewMap extends Component {\r\n  constructor(props) {\r\n    super(props);\r\n    gpsValid = 1;\r\n    prevPositionIsvalidFalse = undefined;\r\n    prevPosition = undefined;\r\n    startFlag = true;\r\n    startPosition = null;\r\n  }\r\n  componentWillReceiveProps(nextProps) {\r\n    gpsValid = 1;\r\n    prevPositionIsvalidFalse = undefined;\r\n    prevPosition = undefined;\r\n    //startFlag = true;\r\n    //startPosition = null;\r\n  }\r\n  shouldComponentUpdate() {\r\n    if (sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !== null) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  render() {\r\n    let value, selectedRun;\r\n    selectedRun =\r\n      this.props.selectedRun !== null\r\n        ? this.props.selectedRun\r\n        : this.props.mapData.runId === \"\"\r\n        ? this.props.mapData.rns && this.props.mapData.rns[0].rid\r\n        : this.props.mapData.runId && this.props.mapData.runId;\r\n    value =\r\n      this.props.mapData.rns &&\r\n      this.props.mapData.rns.filter((item) => item.rid === selectedRun);\r\n\r\n    console.log(\"sessionStorage.getItem\", value, this.props.markerPosition);\r\n    let nextValidGpsIndex = 0;\r\n    if (\r\n      this.props.mapData !== undefined &&\r\n      this.props.mapData !== null &&\r\n      value !== undefined &&\r\n      value.length !== 0 &&\r\n      sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !== null &&\r\n      value[0].dat.findIndex(\r\n        (obj) =>\r\n          obj.ts ==\r\n          Moment(\r\n            sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n            \"DD.MM.YYYY, HH:mm:ss\"\r\n          ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n      ) !== -1\r\n    ) {\r\n      for (\r\n        var i = value[0].dat.findIndex(\r\n          (obj) =>\r\n            obj.ts ==\r\n            Moment(\r\n              sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n              \"DD.MM.YYYY, HH:mm:ss\"\r\n            ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n        );\r\n        i < value[0].dat.length;\r\n        i++\r\n      ) {\r\n        // console.log(\"valid gps\", i);\r\n        if (value[0].dat[i].gvd === 1) {\r\n          nextValidGpsIndex = i;\r\n          console.log(\"valid gps\", nextValidGpsIndex);\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    return (\r\n      <div id=\"multicolormap\">\r\n        {this.props.mapData !== undefined &&\r\n        this.props.mapData !== null &&\r\n        value !== undefined &&\r\n        value.length !== 0 ? (\r\n          <DetailViewGoogleMap\r\n            googleMapURL={googleMapURL}\r\n            loadingElement={<div style={{ height: `100%` }} />}\r\n            containerElement={<div style={{ height: `55vh` }} />}\r\n            mapElement={<div style={{ height: `100%` }} />}\r\n            markerPosition={\r\n              sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !== null &&\r\n              value[0].dat.findIndex(\r\n                (obj) =>\r\n                  obj.ts ==\r\n                  Moment(\r\n                    sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n                    \"DD.MM.YYYY, HH:mm:ss\"\r\n                  ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n              ) !== -1 &&\r\n              value[0].dat[\r\n                value[0].dat.findIndex(\r\n                  (obj) =>\r\n                    obj.ts ==\r\n                    Moment(\r\n                      sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n                      \"DD.MM.YYYY, HH:mm:ss\"\r\n                    ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n                )\r\n              ].gvd !== 0\r\n                ? value[0].dat[\r\n                    value[0].dat.findIndex(\r\n                      (obj) =>\r\n                        obj.ts ==\r\n                        Moment(\r\n                          sessionStorage.getItem(\r\n                            \"clickedTimeStampForRunSlider\"\r\n                          ),\r\n                          \"DD.MM.YYYY, HH:mm:ss\"\r\n                        ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n                    )\r\n                  ].pos[1]\r\n                : sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !==\r\n                    null &&\r\n                  value[0].dat.findIndex(\r\n                    (obj) =>\r\n                      obj.ts ==\r\n                      Moment(\r\n                        sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n                        \"DD.MM.YYYY, HH:mm:ss\"\r\n                      ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n                  ) !== -1 &&\r\n                  value[0].dat[\r\n                    value[0].dat.findIndex(\r\n                      (obj) =>\r\n                        obj.ts ==\r\n                        Moment(\r\n                          sessionStorage.getItem(\r\n                            \"clickedTimeStampForRunSlider\"\r\n                          ),\r\n                          \"DD.MM.YYYY, HH:mm:ss\"\r\n                        ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n                    )\r\n                  ].gvd === 0\r\n                ? value[0].dat[nextValidGpsIndex].pos[1]\r\n                : this.props.markerPosition.lat === 0 ||\r\n                  this.props.markerPosition.lng === 0\r\n                ? value[0].dat[0].gvd !== 0\r\n                  ? value[0].dat[0].pos[1]\r\n                  : this.props.markerPosition\r\n                : this.props.markerPosition\r\n            } //{this.props.markerPosition}\r\n            positions={value[0].dat}\r\n            basicFilter={this.props.basicFilter}\r\n          />\r\n        ) : (\r\n          <div>\r\n            <div className=\"nodatanotificationcontainer\">\r\n              <Alert variant=\"danger\" id=\"nodatanotification\" dismissible>\r\n                <p className=\"nodatanotificationcontent\">\r\n                  No data recorded on selected day.\r\n                </p>\r\n              </Alert>\r\n            </div>\r\n            <div className=\"disabledcontent\">\r\n              <NoDashbordMap\r\n                googleMapURL={googleMapURL}\r\n                loadingElement={<div style={{ height: `100%` }} />}\r\n                containerElement={<div style={{ height: `55vh` }} />}\r\n                mapElement={<div style={{ height: `100%` }} />}\r\n              />\r\n            </div>\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nDetailViewMap.defaultProps = {};\r\n\r\nDetailViewMap.propTypes = {\r\n  mapPath: PropTypes.any,\r\n};\r\n\r\nexport default DetailViewMap;\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { Slider, Rail, Handles } from \"react-compound-slider\";\r\nimport { Row } from \"react-bootstrap\";\r\nimport Moment from \"moment\";\r\n\r\nexport function Handle({\r\n  handle: { id, value, percent },\r\n  getHandleProps,\r\n  mapData,\r\n  basicFilter,\r\n  unit,\r\n}) {\r\n  //let leftMargin = percent === 100 ? 99.5427 : percent; //temp(Want to remove after time arrow icon change)\r\n  //let changeiconmargin = percent >= 100 ? \"changeiconmargin\" : \"\";\r\n  let changetextdirection = percent >= 80 ? \"timearrowtext\" : \"\";\r\n  let km = mapData.dat[value];\r\n  km = basicFilter.bogie == 3 ? km.ava : km.avg;\r\n  let formaTdate = Moment.utc(mapData.dat[value].ts).format(\r\n    \"DD.MM.YYYY HH:mm:ss\"\r\n  );\r\n\r\n  return (\r\n    <div\r\n      className=\"dragIcon\"\r\n      style={{\r\n        left: `${percent}%`,\r\n      }}\r\n      {...getHandleProps(id)}\r\n    >\r\n      <div\r\n        className=\"selectedInterval disable-selection\"\r\n        id={changetextdirection}\r\n      >\r\n        {formaTdate + \" \" + km + \"\" + unit}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\nexport default class DetailViewMapSlider extends Component {\r\n  constructor(props) {\r\n    super(props);\r\n    this.state = {\r\n      selectedInterval: 0,\r\n    };\r\n  }\r\n  componentDidMount() {\r\n    console.log(\r\n      \"mila\",\r\n      this.props.mapData.dat.findIndex(\r\n        (obj) =>\r\n          obj.ts ==\r\n          Moment(\r\n            sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n            \"DD.MM.YYYY, HH:mm:ss\"\r\n          ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n      )\r\n    );\r\n    if (\r\n      sessionStorage.getItem(\"clickedTimeStampForRunSlider\") !== null &&\r\n      this.props.mapData.dat.findIndex(\r\n        (obj) =>\r\n          obj.ts ==\r\n          Moment(\r\n            sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n            \"DD.MM.YYYY, HH:mm:ss\"\r\n          ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n      ) !== -1\r\n    ) {\r\n      this.setState({\r\n        selectedInterval: this.props.mapData.dat.findIndex(\r\n          (obj) =>\r\n            obj.ts ==\r\n            Moment(\r\n              sessionStorage.getItem(\"clickedTimeStampForRunSlider\"),\r\n              \"DD.MM.YYYY, HH:mm:ss\"\r\n            ).format(\"YYYY-MM-DDTHH:mm:ss\")\r\n        ),\r\n      });\r\n    }\r\n  }\r\n  componentWillReceiveProps(nextProps) {\r\n    if (\r\n      nextProps.disValue === true &&\r\n      sessionStorage.getItem(\"clickedTimeStampForRunSlider\") === null\r\n    ) {\r\n      this.setState({ selectedInterval: 0 });\r\n    }\r\n  }\r\n  onChange = (value) => {\r\n    this.setState({\r\n      selectedInterval: value[0],\r\n    });\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      selectedRun,\r\n      mapData,\r\n      onUpdate,\r\n      basicFilter,\r\n      unit,\r\n      disValue,\r\n    } = this.props;\r\n    const min = 0,\r\n      max = this.props.mapData.dat.length - 1;\r\n    console.log(\r\n      \"checking state\",\r\n      this.state.selectedInterval,\r\n      this.props.mapData.dat\r\n    );\r\n    return (\r\n      <div className=\"detailviewmapslidercontainer\">\r\n        <Row>\r\n          <Col md={2}>\r\n            <div className=\"text\">\r\n              {selectedRun}\r\n              <div className=\"runTime\">\r\n                {Moment.utc(mapData.dat[0].ts).format(\"HH:mm\") + \" - \"}\r\n                {Moment.utc(mapData.dat[mapData.dat.length - 1].ts).format(\r\n                  \"HH:mm\"\r\n                )}\r\n              </div>\r\n            </div>\r\n          </Col>\r\n          <Col md={10}>\r\n            <span>\r\n              <Slider\r\n                className=\"sliderStyle\"\r\n                domain={[min, max]}\r\n                step={1}\r\n                mode={2}\r\n                values={[this.state.selectedInterval]}\r\n                onUpdate={onUpdate}\r\n                onChange={this.onChange}\r\n                disabled={disValue}\r\n              >\r\n                <Rail>\r\n                  {({ getRailProps }) => {\r\n                    let colorArea = 100 / mapData.dat.length;\r\n                    let currentColor, operation;\r\n                    return (\r\n                      <div className=\"colorarea\">\r\n                        {mapData.dat.map(\r\n                          (item) => (\r\n                            (currentColor =\r\n                              basicFilter.bogie === 3 ? item.cla : item.clr),\r\n                            (currentColor === \"green\" &&\r\n                              (currentColor = \"#0CA919\"),\r\n                            currentColor === \"yellow\" &&\r\n                              (currentColor = \"#FFD800\"),\r\n                            currentColor === \"red\" &&\r\n                              (currentColor = \"#F03040\"),\r\n                            currentColor === \"gray\" &&\r\n                              (currentColor = \"#545454\")),\r\n                            (operation =\r\n                              basicFilter.operation &&\r\n                              !basicFilter.operation.find(\r\n                                (val) => val == item.ftr.opm\r\n                              )\r\n                                ? \"LightGray\"\r\n                                : \"\"),\r\n                            (operation != \"\" || item.gvd === 0) &&\r\n                              (currentColor = \"LightGray\"),\r\n                            (\r\n                              <div\r\n                                style={{\r\n                                  width: colorArea + \"%\",\r\n                                  backgroundColor: \"#ABD4FD\",\r\n                                  /*mapData.data.length > 300\r\n                                      ? \"LightGray\"\r\n                                      : currentColor*/\r\n                                }}\r\n                                className=\"railStyle\"\r\n                                id={mapData.dat.length}\r\n                              />\r\n                            )\r\n                          )\r\n                        )}\r\n                      </div>\r\n                    );\r\n                  }}\r\n                </Rail>\r\n                <Handles>\r\n                  {({ handles, getHandleProps }) => (\r\n                    <div className=\"slider-handles\">\r\n                      {handles.map((handle) => (\r\n                        <Handle\r\n                          key={handle.id}\r\n                          handle={handle}\r\n                          getHandleProps={getHandleProps}\r\n                          mapData={mapData}\r\n                          basicFilter={basicFilter}\r\n                          unit={unit}\r\n                        />\r\n                      ))}\r\n                    </div>\r\n                  )}\r\n                </Handles>\r\n              </Slider>\r\n            </span>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport PropTypes from \"prop-types\";\r\nimport ScrollMenu from \"react-horizontal-scrolling-menu\";\r\nimport \"./styles.scss\";\r\nimport Moment from \"moment\";\r\nimport momentLocalizer from \"react-widgets-moment\";\r\n\r\nMoment.locale(\"en\");\r\nmomentLocalizer();\r\n\r\n// let startDate = new Date(Moment().subtract(91, \"days\"));\r\n// let endDate = new Date(Moment().subtract(1, \"days\"));\r\n// const getDatesRangeArray = (startDate, endDate, interval) => {\r\n//   //console.log(startDate, endDate, interval);\r\n//   let cfg = { interval: interval || \"days\" };\r\n//   let dateArray = [];\r\n//   let currentDate = Moment(startDate);\r\n//   while (currentDate <= endDate) {\r\n//     dateArray.push({ date: currentDate.format(\"YYYY-MM-DD\") });\r\n//     currentDate = currentDate.add(1, cfg.interval);\r\n//   }\r\n\r\n//   return dateArray;\r\n// };\r\n\r\n// var days = getDatesRangeArray(startDate, endDate);\r\n// console.log(\"date list\", days);\r\n\r\n// const list = getDatesRangeArray(startDate, endDate);\r\n\r\nconst MenuItem = ({ text, totalRuns, selected }) => {\r\n  return (\r\n    <div\r\n      className={`menu-item ${\r\n        selected ? \"active\" : totalRuns === \"No runs\" ? \"no-run\" : \"\"\r\n      }`}\r\n    >\r\n      <span>\r\n        {text}\r\n        <br />\r\n        <span className=\"runcount\">{totalRuns}</span>\r\n      </span>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport const Menu = (list, selected) =>\r\n  list.map((el) => {\r\n    const { dt, trs } = el;\r\n\r\n    return <MenuItem text={dt} totalRuns={trs} key={dt} selected={selected} />;\r\n  });\r\n\r\nconst Arrow = ({ text, className }) => {\r\n  return <div className={className}>{text}</div>;\r\n};\r\n\r\nexport const ArrowLeft = Arrow({ text: \"<\", className: \"arrow-prev\" });\r\nexport const ArrowRight = Arrow({ text: \">\", className: \"arrow-next\" });\r\n\r\n/*function dateDiffInDays(a, b) {\r\n  const _MS_PER_DAY = 1000 * 60 * 60 * 24;\r\n  const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\r\n  const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\r\n  return Math.floor((utc2 - utc1) / _MS_PER_DAY);\r\n}\r\nlet selectedValue;\r\nlet menu;*/\r\nexport default class DateSlider extends Component {\r\n  /*getDatesRangeArray = (startDate, endDate, interval) => {\r\n    let dateArray = [],\r\n      cfg = { interval: interval || \"days\" },\r\n      i = 0;\r\n    let currentDate = new Date(startDate);\r\n    const diffDays = dateDiffInDays(new Date(startDate), new Date(endDate));\r\n    while (i <= diffDays) {\r\n      dateArray.push({\r\n        date: Moment(currentDate).format(\"DD-MM-YYYY\")\r\n      });\r\n      currentDate = Moment(currentDate).add(1, cfg.interval);\r\n      i++;\r\n    }\r\n    return dateArray;\r\n  };*/\r\n\r\n  constructor(props) {\r\n    super(props);\r\n    /*this.dateList = this.getDatesRangeArray(\r\n      this.props.startDate.replace(/%3A/g, \":\"),\r\n      this.props.endDate.replace(/%3A/g, \":\")\r\n    );*/\r\n    this.state = {\r\n      dynamicDatesList: this.props.mapTotalRuns.dat,\r\n      alignCenter: true,\r\n      clickWhenDrag: false,\r\n      dragging: true,\r\n      hideArrows: true,\r\n      hideSingleArrow: true,\r\n      itemsCount: this.props.mapTotalRuns.dat.length,\r\n      selected: this.props.mapTotalRuns.dat[\r\n        this.props.mapTotalRuns.dat.length - 1\r\n      ].dt,\r\n      //this.props.mapTotalRuns.data[this.props.mapTotalRuns.data.length - 1].date\r\n      translate: 0,\r\n      transition: 0.3,\r\n      wheel: true,\r\n      //menuItems: Menu(this.dateList.slice(0, this.dateList.length))\r\n      menuItems: Menu(this.props.mapTotalRuns.dat),\r\n    };\r\n    this.menu = null;\r\n    // selectedValue =\r\n    //   this.props.selectedDate != null && this.props.selectedDate != undefined\r\n    //     ? this.props.selectedDate\r\n    //     : this.props.mapTotalRuns.data[this.props.mapTotalRuns.data.length - 1]\r\n    //         .date;\r\n    // menu = Menu(this.props.mapTotalRuns.data, selectedValue);\r\n  }\r\n\r\n  //componentWillReceiveProps(nextProps) {\r\n  /*if (\r\n      this.props.startDate !== nextProps.startDate ||\r\n      this.props.endDate !== nextProps.endDate\r\n    ) {\r\n      let newDateList = this.getDatesRangeArray(\r\n        nextProps.startDate.replace(/%3A/g, \":\"),\r\n        nextProps.endDate.replace(/%3A/g, \":\")\r\n      );\r\n      this.setState({\r\n        dynamicDatesList: this.props.mapTotalRuns.data,\r\n        itemsCount: this.props.mapTotalRuns.data.length,\r\n\r\n        selected: this.props.mapTotalRuns.data[\r\n          this.props.mapTotalRuns.data.length - 1\r\n        ].date,\r\n        menuItems: Menu(this.props.mapTotalRuns.data)\r\n      });\r\n    }*/\r\n  // selectedValue =\r\n  //   this.props.selectedDate != null && this.props.selectedDate != undefined\r\n  //     ? this.props.selectedDate\r\n  //     : this.props.mapTotalRuns.data[this.props.mapTotalRuns.data.length - 1]\r\n  //         .date;\r\n  // menu = Menu(this.props.mapTotalRuns.data, selectedValue);\r\n  //}\r\n\r\n  // onUpdate = ({ translate }) => {\r\n  //   console.log(`onUpdate: translate: ${translate}`);\r\n  //   this.setState({ translate });\r\n  // };\r\n\r\n  /*onSelect = key => {\r\n    console.log(`onSelect: ${key}`);\r\n    this.setState({ selected: key });\r\n  };*/\r\n\r\n  // componentDidUpdate(prevProps, prevState) {\r\n  //   const { alignCenter } = prevState;\r\n  //   const { alignCenter: alignCenterNew } = this.state;\r\n\r\n  //   this.menu.setInitial();\r\n  // }\r\n\r\n  // setItemsCount = ev => {\r\n  //   const { itemsCount = this.dynamicDateList.length, selected } = this.state;\r\n  //   const val = +ev.target.value;\r\n  //   const itemsCountNew =\r\n  //     !isNaN(val) && val <= this.dynamicDateList.length && val >= 0\r\n  //       ? +ev.target.value\r\n  //       : this.dynamicDateList.length;\r\n  //   const itemsCountChanged = itemsCount !== itemsCountNew;\r\n\r\n  //   if (itemsCountChanged) {\r\n  //     this.menuItems = Menu(\r\n  //       this.dynamicDateList.slice(0, itemsCountNew),\r\n  //       selected\r\n  //     );\r\n  //     this.setState({\r\n  //       itemsCount: itemsCountNew\r\n  //     });\r\n  //   }\r\n  // };\r\n\r\n  // setSelected = ev => {\r\n  //   const { value } = ev.target;\r\n  //   this.setState({ selected: String(value) });\r\n  // };\r\n\r\n  render() {\r\n    const {\r\n      alignCenter,\r\n      clickWhenDrag,\r\n      hideArrows,\r\n      dragging,\r\n      hideSingleArrow,\r\n      itemsCount,\r\n      selected,\r\n      translate,\r\n      transition,\r\n      wheel,\r\n    } = this.state;\r\n\r\n    //menu = Menu(this.props.mapTotalRuns.data, selectedValue); //this.state.menuItems;\r\n    const menu = Menu(this.props.mapTotalRuns.dat);\r\n\r\n    return (\r\n      <div className=\"dateSlider\">\r\n        <ScrollMenu\r\n          ref={(el) => (this.menu = el)}\r\n          data={menu}\r\n          arrowLeft={ArrowLeft}\r\n          arrowRight={ArrowRight}\r\n          hideArrows={false}\r\n          hideSingleArrow=\"false\"\r\n          transition={+transition}\r\n          // onUpdate={this.onUpdate}\r\n          onSelect={this.props.onMapDateSelect}\r\n          selected={\r\n            this.props.selectedDate != null\r\n              ? this.props.selectedDate\r\n              : sessionStorage.getItem(\"clickedTimeStamp\") === null\r\n              ? this.props.mapTotalRuns.dat[\r\n                  this.props.mapTotalRuns.dat.length - 1\r\n                ].dt\r\n              : Moment(\r\n                  sessionStorage.getItem(\"clickedTimeStamp\"),\r\n                  \"DD.MM.YYYY\"\r\n                ).format(\"D-M-YYYY\")\r\n          }\r\n          translate={translate}\r\n          alignCenter={false}\r\n          scrollToSelected={true}\r\n          scrollBy={2}\r\n          //dragging={dragging}\r\n          //clickWhenDrag={clickWhenDrag}\r\n          // wheel={wheel}\r\n        />\r\n        {/* Selected Date : {this.state.selected} */}\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { Accordion, AccordionItem } from \"react-light-accordion\";\r\nimport \"react-light-accordion/demo/css/index.css\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class DetailViewMapLegend extends Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n  }\r\n\r\n  render() {\r\n    console.log(\"basicFilter\", this.props.basicFilter);\r\n    return (\r\n      <div className=\"maplegendcontainer\">\r\n        <Accordion atomic={false}>\r\n          <AccordionItem title={\"Legend\"}>\r\n            {(() => {\r\n              switch (this.props.activeSignal) {\r\n                case \"Slip\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div> 0.0-0.54km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>1.08-1.62km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>2.16-2.70km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>3.24-3.78km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>4.32-4.86km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>5.40-5.94km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>6.48-7.02km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>7.56km/h\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div> 0.54-1.08km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>1.62-2.16km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>2.70-3.24km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>3.78-4.32km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>4.86-5.40km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>5.94-6.48km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>7.02-7.56km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Effort\":\r\n                  if (\r\n                    this.props.basicFilter !== undefined &&\r\n                    this.props.basicFilter.bogie === 3\r\n                  ) {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-20kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>40-60kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>80-100kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>120-140kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>160-180kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>200-220kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>240-260kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>280kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>20-40kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>60-80kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>100-120kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>140-160kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>180-200kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>220-240kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>260-280kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  } else {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-10kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>20-30kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>40-50kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>60-70kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>80-90kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>100-110kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>120-130kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>140kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>10-20kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>30-40kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>50-60kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>70-80kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>90-100kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>110-120kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>130-140kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  }\r\n                case \"Effort Mech. Brake\":\r\n                  if (\r\n                    this.props.basicFilter !== undefined &&\r\n                    this.props.basicFilter.bogie === 3\r\n                  ) {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-5.4kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>10.8-16.20kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>21.6-27.0kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>32.40-37.80kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>43.2-48.6kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>54.0-59.40kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>64.80-70.2kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>75.60kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>5.4-10.8kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>16.20-21.6kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>27.0-32.40kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>37.80-43.2kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>48.6-54.0kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>59.40-64.80kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>70.2-75.60kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  } else {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-2.7kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>5.4-8.10kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>10.8-13.5kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>16.20-18.90kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>21.6-24.3kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>27.0-29.70kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>32.40-35.1kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>37.80kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>2.7-5.4kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>8.10-10.8kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>13.5-16.20kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>18.90-21.6kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>24.3-27.0kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>29.70-32.40kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>35.1-37.80kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  }\r\n                case \"Speed at Wheel\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0-14km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>28-42km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>56-70km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>84-98km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>112-126km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>140-154km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>168-182km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>196km/h\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>14-28km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>42-56km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>70-84km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>98-112km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>126-140km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>154-168km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>182-196km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Speed Driving Trailer\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0-14km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>28-42km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>56-70km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>84-98km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>112-126km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>140-154km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>168-182km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>196km/h\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>14-28km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>42-56km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>70-84km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>98-112km/h\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>126-140km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>154-168km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>182-196km/h\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Effort Reference\":\r\n                  if (\r\n                    this.props.basicFilter !== undefined &&\r\n                    this.props.basicFilter.bogie === 3\r\n                  ) {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-20kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>40-60kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>80-100kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>120-140kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>160-180kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>200-220kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>240-260kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>280kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>20-40kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>60-80kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>100-120kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>140-160kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>180-200kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>220-240kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>260-280kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  } else {\r\n                    return (\r\n                      <div className=\"legend\">\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color1\"></div>0.0-10kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color3\"></div>20-30kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color5\"></div>40-50kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color7\"></div>60-70kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color9\"></div>80-90kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color11\"></div>100-110kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color13\"></div>120-130kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color15\"></div>>140kN\r\n                          </Col>\r\n                        </Row>\r\n                        <Row>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color2\"></div>10-20kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color4\"></div>30-40kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color6\"></div>50-60kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color8\"></div>70-80kN\r\n                          </Col>\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color10\"></div>90-100kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color12\"></div>110-120kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color14\"></div>130-140kN\r\n                          </Col>\r\n\r\n                          <Col className=\"noLeftpadding noRightpadding\">\r\n                            <div id=\"color16\"></div> No data\r\n                          </Col>\r\n                        </Row>\r\n                      </div>\r\n                    );\r\n                  }\r\n                case \"Power Slip\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0.0-10kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>20-30kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>40-50kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>60-70kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>80-90kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>100-110kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>120-130kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>140kW\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>10-20kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>30-40kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>50-60kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>70-80kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>90-100kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>110-120kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>130-140kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Power Mechanical Brake\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0.0-34kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>68-102kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>136-170kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>204-238kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>272-306kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>340-374kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>408-442kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>476kW\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>34-68kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>102-136kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>170-204kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>238-272kW\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>306-340kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>374-408kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>442-476kW\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Pressure Brake Cyl.\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0.0-0.34bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>0.68-1.02bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>1.36-1.70bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>2.04-2.38bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>2.72-3.06bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>3.40-3.74bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>4.08-4.42bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>4.76 bar\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>0.34-0.68bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>1.02-1.36bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>1.70-2.04bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>2.38-2.72bar\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>3.06-3.40bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>3.74-4.08bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>4.42-4.76bar\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                case \"Torsional Osc. Ampl.\":\r\n                  return (\r\n                    <div className=\"legend\">\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color1\"></div>0.0-2.7mHz\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color3\"></div>5.4-8.10mHz\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color5\"></div>10.8-13.5mHz\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color7\"></div>16.20-18.90mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color9\"></div>21.6-24.3mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color11\"></div>27.0-29.70mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color13\"></div>32.40-35.1mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color15\"></div>>37.80mHz\r\n                        </Col>\r\n                      </Row>\r\n                      <Row>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color2\"></div>2.7-5.4mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color4\"></div>8.10-10.8mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color6\"></div>13.5-16.20mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color8\"></div>18.90-21.6mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color10\"></div>24.3-27.0mHz\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color12\"></div>29.70-32.40mHz\r\n                        </Col>\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color14\"></div>35.1-37.80mHz\r\n                        </Col>\r\n\r\n                        <Col className=\"noLeftpadding noRightpadding\">\r\n                          <div id=\"color16\"></div> No data\r\n                        </Col>\r\n                      </Row>\r\n                    </div>\r\n                  );\r\n                default:\r\n                  return <div className=\"legend\">No data available</div>;\r\n              }\r\n            })()}\r\n          </AccordionItem>\r\n        </Accordion>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","//Library\r\nimport React, { Component, Fragment } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport Tabs from \"react-bootstrap/Tabs\";\r\nimport Tab from \"react-bootstrap/Tab\";\r\nimport { injectIntl, FormattedMessage } from \"react-intl\";\r\nimport Moment from \"moment\";\r\nimport { withRouter } from \"react-router-dom\";\r\n//Components\r\nimport \"./styles.scss\";\r\nimport messages from \"./messages\";\r\nimport {\r\n  overlaySignalOptions,\r\n  mainSignalTrendOptions,\r\n  mainSignalScatterOptions,\r\n  xAxisSignalHistogramOptions,\r\n  yAxisSignalHistogramOptions,\r\n  zAxisSignalHistogramOptions,\r\n} from \"./constants\";\r\nimport Loading from \"../../../components/Loading\";\r\nimport TitleBar from \"../../../components/Title/TitleBar\";\r\nimport FilterDetails from \"../../../components/Title/FilterDetails\";\r\nimport SignalSelector from \"../../../components/Title/SignalSelector\";\r\nimport SingleGraph from \"../../../components/SingleGraph\";\r\nimport {\r\n  IconTimeTrend,\r\n  IconScatterPlot,\r\n  IconHistogram,\r\n  IconGps,\r\n} from \"../../../components/Icons\";\r\nimport DetailViewMap from \"../../../components/DetailViewMap\";\r\nimport DetailViewMapSlider from \"../../../components/DetailViewMapSlider\";\r\nimport DateSlider from \"../../../components/DetailViewMapDateSlider\";\r\nimport DetailViewMapLegend from \"../../../components/DetailViewMapLegend\";\r\n\r\nclass SingleTrendPage extends Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n    this.child = React.createRef();\r\n    this.state = {\r\n      key: \"Slip\",\r\n      selectedRun: null,\r\n      markerPosition: {\r\n        lat: 0.0,\r\n        lng: 0.0,\r\n      },\r\n      // isButtonDisabled: false\r\n    };\r\n  }\r\n\r\n  componentWillReceiveProps(nextProps) {\r\n    if (\r\n      this.props.startDate !== nextProps.startDate ||\r\n      this.props.endDate !== nextProps.endDate ||\r\n      this.props.selectedDate !== nextProps.selectedDate ||\r\n      this.props.selectedTrain !== nextProps.selectedTrain ||\r\n      this.props.selectedMainTrend !== nextProps.selectedMainTrend\r\n    ) {\r\n      this.setState({\r\n        selectedRun: null,\r\n        markerPosition: {\r\n          lat: 0.0,\r\n          lng: 0.0,\r\n        },\r\n      });\r\n    }\r\n  }\r\n\r\n  updateHistogram = (value) => {\r\n    this.child.current.onHistogramXaxisChange(value);\r\n  };\r\n\r\n  onUpdate = ([position]) => {\r\n    console.log(\"rimjhim\");\r\n    sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    let selectedRun;\r\n    selectedRun =\r\n      this.state.selectedRun !== null\r\n        ? this.state.selectedRun\r\n        : this.props.mapData.rns && this.props.mapData.rns[0].rid;\r\n\r\n    let filterValue = this.props.mapData.rns.filter(\r\n      (item) => item.rid === selectedRun\r\n    );\r\n    let prevFilterValue = filterValue[0].dat[position - 1];\r\n    filterValue = filterValue[0].dat[position]; //[position + 1];\r\n\r\n    if (filterValue !== undefined && prevFilterValue !== undefined) {\r\n      if (\r\n        filterValue.pos[0].lat >= 1 &&\r\n        filterValue.pos[1].lat >= 1 &&\r\n        filterValue.gvd === 1 &&\r\n        prevFilterValue.gvd !== 0\r\n      ) {\r\n        this.setState({\r\n          markerPosition: filterValue.pos[1],\r\n        });\r\n      }\r\n      if (position === 0 && filterValue.gvd === 1) {\r\n        this.setState({\r\n          markerPosition: filterValue.pos[1],\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  onMapTabClick = async (key) => {\r\n    sessionStorage.removeItem(\"clickedTimeStamp\");\r\n    sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    sessionStorage.removeItem(\"clickedSignal\");\r\n    if (key === \"New\") {\r\n      await this.props.setMainTrendSignal(\"Speed Driving Trailer\");\r\n    } else {\r\n      await this.props.setMainTrendSignal(key);\r\n    }\r\n    this.props.onClickTab(\"MAP_TYPE\");\r\n    this.props.addOverlay(null);\r\n  };\r\n\r\n  onMapSliderClick = (runID, startDate, endDate) => {\r\n    // sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    if (this.state.selectedRun != runID && this.props.mapData.runId === runID) {\r\n      this.setState({\r\n        selectedRun: runID,\r\n      });\r\n    } else {\r\n      this.setState(\r\n        {\r\n          selectedRun: runID,\r\n          markerPosition: { lat: 0.0, lng: 0.0 },\r\n        },\r\n        () => {\r\n          sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n        }\r\n      );\r\n    }\r\n    this.props.setZoomIntervalByRunSelection(startDate, endDate);\r\n  };\r\n\r\n  onMapReset = () => {\r\n    this.setState({\r\n      selectedRun: null,\r\n      markerPosition: {\r\n        lat: 0.0,\r\n        lng: 0.0,\r\n      },\r\n    });\r\n    this.props.onLoadMoreGraph();\r\n  };\r\n\r\n  // onApplyZoomIntervalClick = ()=> {\r\n  //   this.setState({\r\n  //     isButtonDisabled: true\r\n  //   });\r\n\r\n  //   this.props.applyZoomInterval()\r\n  // }\r\n\r\n  render() {\r\n    const { mapData, mapTotalRuns } = this.props;\r\n    return (\r\n      <div>\r\n        <Row>\r\n          <TitleBar\r\n            trainno={this.props.selectedTrain}\r\n            onClickRedirectMap={() => this.props.history.push(\"/TrainViewPage\")}\r\n            id=\"detailview\"\r\n          />\r\n        </Row>\r\n\r\n        <Row>\r\n          <Col md={12} className=\"tabdetailview\">\r\n            <Tabs\r\n              id=\"controlled-tab\"\r\n              activeKey={this.props.selectedTab}\r\n              onSelect={(tab) => this.props.onClickTab(tab)}\r\n            >\r\n              {/* Map tab */}\r\n              <Tab\r\n                eventKey=\"MAP_TYPE\"\r\n                title={\r\n                  <span className=\"tabIcon\">\r\n                    <IconGps />\r\n                    <span className=\"tabtitle\"> Map</span>\r\n                  </span>\r\n                }\r\n              >\r\n                <Row>\r\n                  <Col md={12}>\r\n                    <FilterDetails\r\n                      basicFilter={this.props.basicFilter}\r\n                      advancedFilter={this.props.advancedFilter}\r\n                    />\r\n                  </Col>\r\n                </Row>\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col /*className=\"text-right\"*/>\r\n                    <span className=\"boldText\">Zoomed interval:</span>\r\n                    <span\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \"visible\"\r\n                      }*/\r\n                      className={\"visible zoomed-text\"}\r\n                    >\r\n                      <span>{this.props.startZoomInterval}</span>\r\n                      <span className=\"small-space\">to</span>\r\n                      <span>{this.props.endZoomInterval}</span>\r\n                      <span className=\"small-space\">-</span>\r\n                      <span>{this.props.lockedZoomDuration}</span>\r\n                    </span>\r\n                    <button\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \" btn  btn-sm  btn-link-custom visible\"\r\n                      }*/\r\n                      className={\" btn  btn-sm  btn-link-custom visible\"}\r\n                      onClick={this.onMapReset}\r\n                      disabled={\r\n                        sessionStorage.getItem(\"isTrendZoomed\") !== \"true\"\r\n                      }\r\n                      id=\"resetzoom\"\r\n                    >\r\n                      Reset\r\n                    </button>\r\n                  </Col>\r\n                </Row>\r\n                <Row>\r\n                  <Col md={12} className=\"tabdetailviewmap\">\r\n                    <Tabs\r\n                      id=\"controlled-tab-Map\"\r\n                      activeKey={\r\n                        this.props.selectedMainTrend === \"Slip\"\r\n                          ? \"Slip\"\r\n                          : this.props.selectedMainTrend === \"Effort\"\r\n                          ? \"Effort\"\r\n                          : this.props.selectedMainTrend ===\r\n                            \"Effort Mech. Brake\"\r\n                          ? \"Effort Mech. Brake\"\r\n                          : this.props.selectedMainTrend === \"Speed at Wheel\"\r\n                          ? \"Speed at Wheel\"\r\n                          : \"New\"\r\n                      }\r\n                      onSelect={(key) => {\r\n                        //this.setState({ key });\r\n                        this.onMapTabClick(key);\r\n                      }}\r\n                    >\r\n                      {/* Slip tab */}\r\n                      <Tab\r\n                        eventKey=\"Slip\"\r\n                        title={<span className=\"tabtitle\">Slip</span>}\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null /*||\r\n                            this.props.loadingMap === true ||\r\n                            this.state.key === \"Slip\"*/ ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            <DetailViewMapLegend\r\n                              activeSignal={this.props.selectedMainTrend}\r\n                            />\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={this.props.mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.runId === \"\"\r\n                                        ? this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid\r\n                                        : this.props.mapData.runId &&\r\n                                          this.props.mapData.runId)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(\r\n                                        item.rid,\r\n                                        item.dat[0].ts,\r\n                                        item.dat[item.dat.length - 1].ts\r\n                                      )\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab>\r\n                      {/* Effort tab */}\r\n                      <Tab\r\n                        eventKey=\"Effort\"\r\n                        title={<span className=\"tabtitle\">Effort</span>}\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined || mapData === null ? (\r\n                              //|| this.props.loadingMap === true || this.state.key === \"Slip\"\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            <DetailViewMapLegend\r\n                              activeSignal={this.props.selectedMainTrend}\r\n                              basicFilter={this.props.basicFilter}\r\n                            />\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.runId === \"\"\r\n                                        ? this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid\r\n                                        : this.props.mapData.runId &&\r\n                                          this.props.mapData.runId)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(\r\n                                        item.rid,\r\n                                        item.dat[0].ts,\r\n                                        item.dat[item.dat.length - 1].ts\r\n                                      )\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab>\r\n                      {/* Effort Driving tab */}\r\n                      {/* <Tab\r\n                        eventKey=\"EffortDriving\"\r\n                        title={<span className=\"tabtitle\">Effort Driving</span>}\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null \r\n                            //   ||\r\n                            // this.props.loadingMap === true ||\r\n                            // this.state.key === \"Slip\" \r\n                            ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(item.rid)\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab> */}\r\n                      {/* Effort Braking (electrical) tab */}\r\n                      {/* <Tab\r\n                        eventKey=\"EffortBraking\"\r\n                        title={\r\n                          <span className=\"tabtitle\">\r\n                            Effort Braking (electrical)\r\n                          </span>\r\n                        }\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null \r\n                            //   ||\r\n                            // this.props.loadingMap === true ||\r\n                            // this.state.key === \"Slip\" \r\n                            ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(item.rid)\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab> */}\r\n                      {/* Effort Braking (mechanical) tab */}\r\n                      <Tab\r\n                        eventKey=\"Effort Mech. Brake\"\r\n                        title={\r\n                          <span className=\"tabtitle\">Effort Mech. Brake</span>\r\n                        }\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null /*||\r\n                            this.props.loadingMap === true ||\r\n                            this.state.key === \"Slip\"*/ ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            <DetailViewMapLegend\r\n                              activeSignal={this.props.selectedMainTrend}\r\n                              basicFilter={this.props.basicFilter}\r\n                            />\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.runId === \"\"\r\n                                        ? this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid\r\n                                        : this.props.mapData.runId &&\r\n                                          this.props.mapData.runId)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(\r\n                                        item.rid,\r\n                                        item.dat[0].ts,\r\n                                        item.dat[item.dat.length - 1].ts\r\n                                      )\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab>\r\n                      {/* Speed tab */}\r\n                      <Tab\r\n                        eventKey=\"Speed at Wheel\"\r\n                        title={<span className=\"tabtitle\">Speed at Wheel</span>}\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null /*||\r\n                            this.props.loadingMap === true ||\r\n                            this.state.key === \"Slip\"*/ ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            <DetailViewMapLegend\r\n                              activeSignal={this.props.selectedMainTrend}\r\n                            />\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.runId === \"\"\r\n                                        ? this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid\r\n                                        : this.props.mapData.runId &&\r\n                                          this.props.mapData.runId)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(\r\n                                        item.rid,\r\n                                        item.dat[0].ts,\r\n                                        item.dat[item.dat.length - 1].ts\r\n                                      )\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab>\r\n                      {/* New signal tab */}\r\n                      <Tab\r\n                        eventKey=\"New\"\r\n                        title={\r\n                          <span className=\"tabtitle\">\r\n                            {this.props.selectedMainTrend ===\r\n                              \"Speed Driving Trailer\" ||\r\n                            this.props.selectedMainTrend ===\r\n                              \"Effort Reference\" ||\r\n                            this.props.selectedMainTrend === \"Power Slip\" ||\r\n                            this.props.selectedMainTrend ===\r\n                              \"Power Mechanical Brake\" ||\r\n                            this.props.selectedMainTrend ===\r\n                              \"Pressure Brake Cyl.\" ||\r\n                            this.props.selectedMainTrend ===\r\n                              \"Torsional Osc. Ampl.\"\r\n                              ? this.props.selectedMainTrend\r\n                                  .replace(/([A-Z])/g, \" $1\")\r\n                                  .trim()\r\n                              : \"Speed Driving Trailer\"}\r\n                          </span>\r\n                        }\r\n                      >\r\n                        <Row>\r\n                          <Col md={12}>\r\n                            {mapData === undefined ||\r\n                            mapData ===\r\n                              null /*||\r\n                            this.props.loadingMap === true ||\r\n                            this.state.key === \"Slip\"*/ ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DetailViewMap\r\n                                mapData={mapData}\r\n                                markerPosition={this.state.markerPosition}\r\n                                basicFilter={this.props.basicFilter}\r\n                                advancedFilter={this.props.advancedFilter}\r\n                                selectedRun={this.state.selectedRun}\r\n                              />\r\n                            )}\r\n                            <DetailViewMapLegend\r\n                              activeSignal={this.props.selectedMainTrend}\r\n                              basicFilter={this.props.basicFilter}\r\n                            />\r\n                            {mapTotalRuns === undefined ||\r\n                            mapTotalRuns === null ? (\r\n                              <Col md={12}>\r\n                                <Loading />\r\n                              </Col>\r\n                            ) : (\r\n                              <DateSlider\r\n                                startDate={this.props.startDate}\r\n                                endDate={this.props.endDate}\r\n                                onMapDateSelect={this.props.onMapDateSelect}\r\n                                selectedDate={this.props.selectedDate}\r\n                                mapTotalRuns={this.props.mapTotalRuns}\r\n                              />\r\n                            )}\r\n                            <div class={\"sliderlistcontainer\"}>\r\n                              {mapData != undefined &&\r\n                                mapData != null &&\r\n                                mapData.rns &&\r\n                                mapData.rns.length !== 0 &&\r\n                                mapData.rns.map((item, index) => (\r\n                                  <div\r\n                                    variant=\"\"\r\n                                    className={\r\n                                      item.rid ===\r\n                                      (this.state.selectedRun != null\r\n                                        ? this.state.selectedRun\r\n                                        : this.props.mapData.runId === \"\"\r\n                                        ? this.props.mapData.rns &&\r\n                                          this.props.mapData.rns[0].rid\r\n                                        : this.props.mapData.runId &&\r\n                                          this.props.mapData.runId)\r\n                                        ? \"sliderlist sliderlistactive \"\r\n                                        : \"sliderlist\"\r\n                                    }\r\n                                    onMouseDown={() =>\r\n                                      this.onMapSliderClick(\r\n                                        item.rid,\r\n                                        item.dat[0].ts,\r\n                                        item.dat[item.dat.length - 1].ts\r\n                                      )\r\n                                    }\r\n                                    id={item}\r\n                                  >\r\n                                    <DetailViewMapSlider\r\n                                      mapData={item}\r\n                                      onUpdate={this.onUpdate}\r\n                                      selectedRun={item.rid}\r\n                                      basicFilter={this.props.basicFilter}\r\n                                      advancedFilter={this.props.advancedFilter}\r\n                                      unit={mapData.cfg.unt}\r\n                                      disValue={\r\n                                        item.rid ===\r\n                                        (this.state.selectedRun != null\r\n                                          ? this.state.selectedRun\r\n                                          : this.props.mapData.rns &&\r\n                                            this.props.mapData.rns[0].rid)\r\n                                          ? false\r\n                                          : true\r\n                                      }\r\n                                    />\r\n                                  </div>\r\n                                ))}\r\n                            </div>\r\n                          </Col>\r\n                        </Row>\r\n                      </Tab>\r\n                    </Tabs>\r\n                  </Col>\r\n                </Row>\r\n              </Tab>\r\n\r\n              {/* Time trend tab */}\r\n              <Tab\r\n                eventKey=\"TREND_TYPE\"\r\n                title={\r\n                  <span className=\"tabIcon\">\r\n                    <IconTimeTrend fill=\"\" />\r\n                    <span className=\"tabtitle\"> Time trend</span>\r\n                  </span>\r\n                }\r\n              >\r\n                <Row>\r\n                  <Col md={12}>\r\n                    <FilterDetails\r\n                      basicFilter={this.props.basicFilter}\r\n                      advancedFilter={this.props.advancedFilter}\r\n                    />\r\n                  </Col>\r\n                </Row>\r\n                <SignalSelector\r\n                  mainSignalValues={mainSignalTrendOptions}\r\n                  overlaySignalValues={overlaySignalOptions}\r\n                  selectedMain={this.props.selectedMainTrend}\r\n                  selectedOverlays={this.props.selectedOverlaysTrend}\r\n                  clickMainSignal={this.props.clickMainSignalTrend}\r\n                  clickOverlaySignal={this.props.clickOverlaySignalTrend}\r\n                  chartType={\"TREND_TYPE\"}\r\n                />\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col className=\"\" /*className=\"text-right \"*/>\r\n                    <span className=\"boldText\">Zoomed interval:</span>\r\n                    <span\r\n                      /*className={\r\n                      sessionStorage.getItem(\"zoomIntervalStartDate\") ===\r\n                        \"null\" &&\r\n                      sessionStorage.getItem(\"zoomIntervalEndDate\") === \"null\"\r\n                        ? \"hidden\"\r\n                        : \"visible zoomed-text\"\r\n                    }*/\r\n                      className={\"visible zoomed-text\"}\r\n                    >\r\n                      <span>{this.props.startZoomInterval}</span>\r\n                      <span className=\"small-space\">to</span>\r\n                      <span>{this.props.endZoomInterval}</span>\r\n                      <span className=\"small-space\">-</span>\r\n                      <span>{this.props.lockedZoomDuration}</span>\r\n                    </span>\r\n                    <span className=\"zoomed-btns\">\r\n                      <button\r\n                        /*className={\r\n                        sessionStorage.getItem(\"zoomIntervalStartDate\") ===\r\n                          \"null\" &&\r\n                        sessionStorage.getItem(\"zoomIntervalEndDate\") ===\r\n                          \"null\"\r\n                          ? \"hidden\"\r\n                          : \" btn  btn-sm  btn-link-custom visible\"\r\n                      }*/\r\n                        className={\" btn  btn-sm  btn-link-custom visible\"}\r\n                        onClick={() => {\r\n                          this.props.onLoadMoreGraph(\"\", \"\", \"\", true);\r\n                        }}\r\n                        disabled={\r\n                          (sessionStorage.getItem(\"zoomIntervalStartDate\") ===\r\n                            \"null\" &&\r\n                            sessionStorage.getItem(\"zoomIntervalEndDate\") ===\r\n                              \"null\") ||\r\n                          this.props.isButtonDisabled\r\n                        }\r\n                        /*id={\r\n                          this.props.isApplyZoomEnabled === true\r\n                            ? \"lockzoomclosed\"\r\n                            : \"lockzoomopen\"\r\n                        }*/\r\n                        id={\"backzoom\"}\r\n                      >\r\n                        Back\r\n                      </button>\r\n                      <button\r\n                        /*className={\r\n                        sessionStorage.getItem(\"isTrendZoomed\") !== \"true\"\r\n                          ? \"hidden\"\r\n                          : \" btn  btn-sm  btn-link-custom visible\"\r\n                      }*/\r\n                        className={\" btn  btn-sm  btn-link-custom visible\"}\r\n                        onClick={this.props.onLoadMoreGraph}\r\n                        disabled={\r\n                          sessionStorage.getItem(\"isTrendZoomed\") !== \"true\"\r\n                        }\r\n                        id=\"resetzoom\"\r\n                      >\r\n                        Reset\r\n                      </button>\r\n                    </span>\r\n                  </Col>\r\n                </Row>\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col className=\"drag-msg noRightpadding\">\r\n                    <FormattedMessage {...messages.clickDragText} />\r\n                  </Col>\r\n                </Row>\r\n                <Row>\r\n                  <Col md={12}>\r\n                    {(this.props.loadingOverlay === true ||\r\n                      this.props.timetrendata === null ||\r\n                      this.props.loadingTimetrend === true) && (\r\n                      <div id=\"overlay\" onclick=\"off()\">\r\n                        <div id=\"loader\">\r\n                          <Loading loadintText=\"Loading ...\" />\r\n                        </div>\r\n                      </div>\r\n                    )}\r\n                    {this.props.timetrendata === null ||\r\n                    this.props.loadingTimetrend === true ? (\r\n                      <Col md={12} className=\"addMarginTop nodatafound\">\r\n                        {/* <Loading /> */}\r\n                      </Col>\r\n                    ) : this.props.timetrendata.length !== 0 ? (\r\n                      this.props.selectedTab === \"TREND_TYPE\" && (\r\n                        <Fragment>\r\n                          <div id=\"chartLoader\">\r\n                            {/* <Loading /> */}\r\n                            <div id=\"overlay\" onclick=\"off()\">\r\n                              <div id=\"loader\">\r\n                                <Loading loadintText=\"Loading ...\" />\r\n                              </div>\r\n                            </div>\r\n                          </div>\r\n                          <SingleGraph\r\n                            className=\"chart\"\r\n                            data={this.props.timetrendata}\r\n                            selectedMainTrend={this.props.selectedMainTrend}\r\n                            selectedOverlaysTrend={\r\n                              this.props.selectedOverlaysTrend\r\n                            }\r\n                            chartType={\"TREND_TYPE\"}\r\n                            basicFilter={this.props.basicFilter}\r\n                            advancedFilter={this.props.advancedFilter}\r\n                            onLoadMoreGraph={this.props.onLoadMoreGraph}\r\n                          />\r\n                        </Fragment>\r\n                      )\r\n                    ) : (\r\n                      <Col md={12} className=\"addMarginTop nodatafound\">\r\n                        <div> Sorry...</div>\r\n                        <div className=\"addMarginTop\">\r\n                          No data found for this time interval !\r\n                        </div>\r\n                      </Col>\r\n                    )}\r\n                  </Col>\r\n                </Row>\r\n              </Tab>\r\n\r\n              {/* Scatter plot tab */}\r\n              <Tab\r\n                eventKey=\"SCATTER_TYPE\"\r\n                title={\r\n                  <span className=\"tabIcon\">\r\n                    <IconScatterPlot />\r\n                    <span className=\"tabtitle\">Scatter plot</span>\r\n                  </span>\r\n                }\r\n              >\r\n                <Row>\r\n                  <Col md={12}>\r\n                    <FilterDetails\r\n                      basicFilter={this.props.basicFilter}\r\n                      advancedFilter={this.props.advancedFilter}\r\n                    />\r\n                  </Col>\r\n                </Row>\r\n                <SignalSelector\r\n                  mainSignalValues={mainSignalScatterOptions}\r\n                  selectedMain={this.props.selectedMainScatter}\r\n                  clickMainSignal={this.props.handleScatterDropdownChange}\r\n                  chartType={\"SCATTER_TYPE\"}\r\n                  handleScatterplotAvgMaxChange={\r\n                    this.props.handleScatterplotAvgMaxChange\r\n                  }\r\n                  scatterplotAvg={this.props.scatterplotAvg}\r\n                />\r\n                <Row className=\"lock-zoom-con\">\r\n                  {/* <Col className=\"drag-msg noRightpadding\">\r\n                    <FormattedMessage {...messages.clickDragText} />\r\n                  </Col> */}\r\n                  <Col /*className=\"text-right\"*/>\r\n                    <span className=\"boldText\">Zoomed interval:</span>\r\n                    <span\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \"visible\"\r\n                      }*/\r\n                      className={\"visible zoomed-text\"}\r\n                    >\r\n                      <span>{this.props.startZoomInterval}</span>\r\n                      <span className=\"small-space\">to</span>\r\n                      <span>{this.props.endZoomInterval}</span>\r\n                      <span className=\"small-space\">-</span>\r\n                      <span>{this.props.lockedZoomDuration}</span>\r\n                    </span>\r\n                    <button\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \" btn  btn-sm  btn-link-custom visible\"\r\n                      }*/\r\n                      className={\" btn  btn-sm  btn-link-custom visible\"}\r\n                      onClick={this.props.onLoadMoreGraph}\r\n                      disabled={\r\n                        sessionStorage.getItem(\"isTrendZoomed\") !== \"true\"\r\n                      }\r\n                      id=\"resetzoom\"\r\n                    >\r\n                      Reset\r\n                    </button>\r\n                  </Col>\r\n                </Row>\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col className=\"drag-msg noRightpadding\">\r\n                    <FormattedMessage {...messages.clickDragText} />\r\n                  </Col>\r\n                </Row>\r\n                <Row>\r\n                  <Col md={12}>\r\n                    {this.props.scatterplotdata === null ||\r\n                    this.props.loading === true ||\r\n                    this.props.loadingScatterB2 === true ? (\r\n                      <Col md={12}>\r\n                        <Loading />\r\n                      </Col>\r\n                    ) : this.props.scatterplotdata.length !== 0 ? (\r\n                      this.props.selectedTab === \"SCATTER_TYPE\" && (\r\n                        <Fragment>\r\n                          <div id=\"chartLoader\">\r\n                            <Loading />\r\n                          </div>\r\n                          <SingleGraph\r\n                            className=\"chart\"\r\n                            data={this.props.scatterplotdata}\r\n                            selectedMainScatter={this.props.selectedMainScatter}\r\n                            chartType={\"SCATTER_TYPE\"}\r\n                          />\r\n                        </Fragment>\r\n                      )\r\n                    ) : (\r\n                      <Col md={12} className=\"addMarginTop nodatafound\">\r\n                        <div> Sorry...</div>\r\n                        <div className=\"addMarginTop\">\r\n                          No data found for this time interval !\r\n                        </div>\r\n                      </Col>\r\n                    )}\r\n                  </Col>\r\n                </Row>\r\n              </Tab>\r\n\r\n              {/* Histogram tab */}\r\n              <Tab\r\n                eventKey=\"HISTOGRAM_TYPE\"\r\n                title={\r\n                  <span className=\"tabIcon\">\r\n                    <IconHistogram />\r\n                    <span className=\"tabtitle\">Histogram</span>\r\n                  </span>\r\n                }\r\n              >\r\n                <Row>\r\n                  <Col md={12}>\r\n                    <FilterDetails\r\n                      basicFilter={this.props.basicFilter}\r\n                      advancedFilter={this.props.advancedFilter}\r\n                    />\r\n                  </Col>\r\n                </Row>\r\n                <SignalSelector\r\n                  mainSignalValues={xAxisSignalHistogramOptions}\r\n                  yaxisSignalValues={yAxisSignalHistogramOptions}\r\n                  zaxisSignalValues={zAxisSignalHistogramOptions}\r\n                  selectedMain={this.props.selectedMainScatter}\r\n                  clickMainSignal={this.props.clickMainSignalScatter}\r\n                  chartType={\"HISTOGRAM_TYPE\"}\r\n                  updateHistogram={this.updateHistogram}\r\n                  handleHistogramDropdownChange={\r\n                    this.props.handleHistogramDropdownChange\r\n                  }\r\n                  getHistogramDataBasedonUserSelection={\r\n                    this.props.getHistogramDataBasedonUserSelection\r\n                  }\r\n                  selectedSignalsHistogram={this.props.selectedSignalsHistogram}\r\n                />\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col /*className=\"text-right\"*/>\r\n                    <span className=\"boldText\">Zoomed interval:</span>\r\n                    <span\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \"visible\"\r\n                      }*/\r\n                      className={\"visible zoomed-text\"}\r\n                    >\r\n                      <span>{this.props.startZoomInterval}</span>\r\n                      <span className=\"small-space\">to</span>\r\n                      <span>{this.props.endZoomInterval}</span>\r\n                      <span className=\"small-space\">-</span>\r\n                      <span>{this.props.lockedZoomDuration}</span>\r\n                    </span>\r\n                    <button\r\n                      /*className={\r\n                        this.props.isApplyZoomEnabled !== true\r\n                          ? \"hidden\"\r\n                          : \" btn  btn-sm  btn-link-custom visible\"\r\n                      }*/\r\n                      className={\" btn  btn-sm  btn-link-custom visible\"}\r\n                      onClick={this.props.onLoadMoreGraph}\r\n                      disabled={\r\n                        sessionStorage.getItem(\"isTrendZoomed\") !== \"true\"\r\n                      }\r\n                      id=\"resetzoom\"\r\n                    >\r\n                      Reset\r\n                    </button>\r\n                  </Col>\r\n                </Row>\r\n                <Row className=\"lock-zoom-con\">\r\n                  <Col className=\"drag-msg noRightpadding\">\r\n                    <FormattedMessage {...messages.clickDragText} />\r\n                  </Col>\r\n                </Row>\r\n                <Row>\r\n                  <Col md={12}>\r\n                    {this.props.histogramdata === null ||\r\n                    this.props.loading === true ? (\r\n                      <Col md={12}>\r\n                        <Loading />\r\n                      </Col>\r\n                    ) : this.props.histogramdata.dat.length !== 0 ? (\r\n                      this.props.selectedTab === \"HISTOGRAM_TYPE\" && (\r\n                        <Fragment>\r\n                          <div id=\"chartLoader\">\r\n                            <Loading />\r\n                          </div>\r\n                          <SingleGraph\r\n                            className=\"chart\"\r\n                            ref={this.child}\r\n                            data={this.props.histogramdata}\r\n                            chartType={\"HISTOGRAM_TYPE\"}\r\n                          />\r\n                        </Fragment>\r\n                      )\r\n                    ) : (\r\n                      <Col md={12} className=\"addMarginTop nodatafound\">\r\n                        <div> Sorry...</div>\r\n                        <div className=\"addMarginTop\">\r\n                          No data found for this time interval !\r\n                        </div>\r\n                      </Col>\r\n                    )}\r\n                  </Col>\r\n                </Row>\r\n              </Tab>\r\n            </Tabs>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nSingleTrendPage.defaultProps = {\r\n  selectedTrain: undefined,\r\n  startTime: undefined,\r\n  endTime: undefined,\r\n  startTimeDate: undefined,\r\n  endTimeDate: undefined,\r\n  graphsData: undefined,\r\n};\r\n\r\nSingleTrendPage.propTypes = {\r\n  selectedTrain: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n  startTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  endTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  graphsData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n};\r\n\r\nexport default withRouter(SingleTrendPage);\r\n","import React, { Component } from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport { Card, Button, Row, Col } from \"react-bootstrap\";\r\nimport { Accordion, AccordionItem } from \"react-light-accordion\";\r\nimport \"react-light-accordion/demo/css/index.css\";\r\nimport { IconPowertrain } from \"../Icons\";\r\nimport \"./styles.scss\";\r\n\r\nconst TrainList = ({ onTrainSelect, trainno, trainList }) => {\r\n  return (\r\n    <div>\r\n      <div className=\"trainlisttitle\">Train list</div>\r\n      <div>\r\n        {trainList !== null\r\n          ? trainList.map((item, index) => (\r\n              <div\r\n                variant=\"\"\r\n                className={\r\n                  //item.locomotiveName === trainno\r\n                  item.td == \"0.0 km\"\r\n                    ? \"trainlistcontainer disabledcontent\"\r\n                    : item.nm === trainno\r\n                    ? \"trainlistcontainer trainlistactive\"\r\n                    : \"trainlistcontainer\"\r\n                }\r\n                onClick={onTrainSelect}\r\n                id={item.nm}\r\n              >\r\n                <span className=\"trainlisticon\">\r\n                  <img src={require(\"../../assets/images/subway.svg\")} />\r\n                </span>{\" \"}\r\n                {item.nm}\r\n              </div>\r\n            ))\r\n          : \" Loading ...\"}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport const BasicFilter = ({\r\n  onChange,\r\n  filter,\r\n  clearBasicFilter,\r\n  selectedTab,\r\n}) => {\r\n  return (\r\n    <div>\r\n      <div className=\"basicfiltertitle\">\r\n        <Row>\r\n          <Col md={7} sm={6} xs={6} className=\"noLeftpadding\">\r\n            Basic filter\r\n          </Col>\r\n          <Col md={5} sm={6} xs={6} className=\"clrbtn\">\r\n            <Button className=\"smallbtn\" onClick={clearBasicFilter}>\r\n              Reset\r\n            </Button>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n      <div className=\"basicfilteraccordion\">\r\n        <Accordion atomic={false}>\r\n          <AccordionItem\r\n            title={\r\n              <span>\r\n                <img\r\n                  src={require(\"../../assets/images/wet.svg\")}\r\n                  className=\"accordiontitleicon\"\r\n                />\r\n                Weather conditions\r\n                {/*/\r\n                <span className=\"accordiontitlevalue\"> {filter.weather}</span>*/}\r\n              </span>\r\n            }\r\n          >\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Wet\"\r\n              name=\"weather\"\r\n              id=\"weatherconditionwet\"\r\n              value=\"Wet\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.weather === \"Wet\" ? true : false}\r\n              disabled\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Dry\"\r\n              name=\"weather\"\r\n              id=\"weatherconditiondry\"\r\n              value=\"Dry\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.weather === \"Dry\" ? true : false}\r\n              disabled\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"weather\"\r\n              id=\"weatherconditiondry\"\r\n              value=\"All\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.weather === \"All\" ? true : false}\r\n              disabled\r\n            />\r\n          </AccordionItem>\r\n\r\n          <AccordionItem\r\n            title={\r\n              <span>\r\n                <img\r\n                  src={require(\"../../assets/images/magnet.svg\")}\r\n                  className=\"accordiontitleicon\"\r\n                />\r\n                Operation mode\r\n                <span className=\"accordiontitlevalue\">\r\n                  {/* ({filter.operation && filter.operation.length}) */}\r\n                </span>\r\n              </span>\r\n            }\r\n          >\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Pulling, cabin 1 in front\"\r\n              name=\"operation\"\r\n              id=\"operationmode1\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.operation && filter.operation.includes(1)}\r\n              disabled={selectedTab === \"HISTOGRAM_TYPE\" ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Pulling, cabin 2 in front\"\r\n              name=\"operation\"\r\n              id=\"operationmode2\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.operation && filter.operation.includes(2)}\r\n              disabled={selectedTab === \"HISTOGRAM_TYPE\" ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Pushing, cabin 1 in front\"\r\n              name=\"operation\"\r\n              id=\"operationmode3\"\r\n              value=\"3\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.operation && filter.operation.includes(3)}\r\n              disabled={selectedTab === \"HISTOGRAM_TYPE\" ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Pushing, cabin 2 in front\"\r\n              name=\"operation\"\r\n              id=\"operationmode4\"\r\n              value=\"4\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.operation && filter.operation.includes(4)}\r\n              disabled={selectedTab === \"HISTOGRAM_TYPE\" ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Standstill\"\r\n              name=\"operation\"\r\n              id=\"operationmode5\"\r\n              value=\"5\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.operation && filter.operation.includes(5)}\r\n              disabled={selectedTab === \"HISTOGRAM_TYPE\" ? true : false}\r\n            />\r\n          </AccordionItem>\r\n\r\n          <AccordionItem\r\n            title={\r\n              <span>\r\n                <img\r\n                  src={require(\"../../assets/images/generator.svg\")}\r\n                  className=\"accordiontitleicon\"\r\n                />\r\n                Bogie\r\n              </span>\r\n            }\r\n          >\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Bogie 1\"\r\n              name=\"bogie\"\r\n              id=\"bogie1\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.bogie === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Bogie 2\"\r\n              name=\"bogie\"\r\n              id=\"bogie2\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.bogie === 2 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"bogie\"\r\n              id=\"bogieall\"\r\n              value=\"3\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.bogie === 3 ? true : false}\r\n            />\r\n          </AccordionItem>\r\n        </Accordion>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\nexport const AdvanceFilter = ({ onChange, filter, clearAdvancedFilter }) => {\r\n  return (\r\n    <div>\r\n      <div className=\"advancefiltertitle\">\r\n        <Row>\r\n          <Col md={7} sm={6} xs={6} className=\"noLeftpadding\">\r\n            Advanced filter\r\n          </Col>\r\n          <Col md={5} sm={6} xs={6} className=\"clrbtn\">\r\n            <Button className=\"smallbtn\" onClick={clearAdvancedFilter}>\r\n              Reset\r\n            </Button>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n      <div className=\"advancefilteraccordion\">\r\n        <Accordion atomic={false}>\r\n          {/* <AccordionItem title=\"Routes\">\r\n            <div className=\"filterroutelist\">\r\n              <Form.Check\r\n                custom\r\n                type=\"checkbox\"\r\n                label=\"ZH-OTL\"\r\n                name=\"routes1\"\r\n                id=\"routes1\"\r\n                value=\"ZH-OTL\"\r\n                onChange={onChange}\r\n                className={\"elements\"}\r\n                disabled\r\n              />\r\n              <Form.Check\r\n                custom\r\n                type=\"checkbox\"\r\n                label=\"OLT-BE\"\r\n                name=\"routes2\"\r\n                id=\"routes2\"\r\n                value=\"OLT-BE\"\r\n                onChange={onChange}\r\n                className={\"elements\"}\r\n                disabled\r\n              />\r\n              <Form.Check\r\n                custom\r\n                type=\"checkbox\"\r\n                label=\"OTL-BSL\"\r\n                name=\"routes2\"\r\n                id=\"routes2\"\r\n                value=\"OTL-BSL\"\r\n                onChange={onChange}\r\n                className={\"elements\"}\r\n                disabled\r\n              />\r\n              <Form.Check\r\n                custom\r\n                type=\"checkbox\"\r\n                label=\"LU-OLT\"\r\n                name=\"routes3\"\r\n                id=\"routes3\"\r\n                value=\"LU-OLT\"\r\n                onChange={onChange}\r\n                className={\"elements\"}\r\n                disabled\r\n              />\r\n            </div>\r\n          </AccordionItem> */}\r\n\r\n          <AccordionItem title=\"Ambient temperature\">\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Above 25 °C\"\r\n              name=\"temperature\"\r\n              id=\"temperaturehigh\"\r\n              value=\"3\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.temperature && filter.temperature.includes(3)}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"0 °C to 25 °C\"\r\n              name=\"temperature\"\r\n              id=\"temperaturemedium\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.temperature && filter.temperature.includes(2)}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"checkbox\"\r\n              label=\"Below 0 °C\"\r\n              name=\"temperature\"\r\n              id=\"temperaturelow\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.temperature && filter.temperature.includes(1)}\r\n            />\r\n          </AccordionItem>\r\n\r\n          <AccordionItem title=\"Torsional oscillation protection\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Active\"\r\n              name=\"toprotection\"\r\n              id=\"toprotectionactive\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.toprotection === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Inactive\"\r\n              name=\"toprotection\"\r\n              id=\"toprotectioninactive\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.toprotection === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"toprotection\"\r\n              id=\"toprotectionall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.toprotection === 2 ? true : false}\r\n            />\r\n          </AccordionItem>\r\n\r\n          <AccordionItem title=\"Anti slip brake\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Active\"\r\n              name=\"antislipbrake\"\r\n              id=\"antislipbrakeactive\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.antislipbrake === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Inactive\"\r\n              name=\"antislipbrake\"\r\n              id=\"antislipbrakeinactive\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.antislipbrake === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"antislipbrake\"\r\n              id=\"antislipbrakeall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.antislipbrake === 2 ? true : false}\r\n            />\r\n          </AccordionItem>\r\n\r\n          {/* <AccordionItem title=\"Adhesion control\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Active\"\r\n              name=\"adhesioncontrol\"\r\n              id=\"adhesioncontrolactive\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.adhesioncontrol === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Inactive\"\r\n              name=\"adhesioncontrol\"\r\n              id=\"adhesioncontrolinactive\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.adhesioncontrol === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"adhesioncontrol\"\r\n              id=\"adhesioncontrolall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.adhesioncontrol === 2 ? true : false}\r\n            />\r\n          </AccordionItem> */}\r\n\r\n          <AccordionItem title=\"Driving trailer velocity\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Available\"\r\n              name=\"drivingtrailervelocity\"\r\n              id=\"dtvelocityavailable\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.drivingtrailervelocity === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Not available\"\r\n              name=\"drivingtrailervelocity\"\r\n              id=\"dtvelocitynotavailable\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.drivingtrailervelocity === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"drivingtrailervelocity\"\r\n              id=\"dtvelocityall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.drivingtrailervelocity === 2 ? true : false}\r\n            />\r\n          </AccordionItem>\r\n\r\n          {/* <AccordionItem title=\"Sling brake\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Active\"\r\n              name=\"slingbrake\"\r\n              id=\"slingbrakeactive\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.slingbrake === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Inactive\"\r\n              name=\"slingbrake\"\r\n              id=\"slingbrakeinactive\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.slingbrake === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"slingbrake\"\r\n              id=\"slingbrakeall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.slingbrake === 2 ? true : false}\r\n            />\r\n          </AccordionItem> */}\r\n\r\n          <AccordionItem title=\"Sander\">\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Active\"\r\n              name=\"sander\"\r\n              id=\"sanderactive\"\r\n              value=\"1\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.sander === 1 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"Inactive\"\r\n              name=\"sander\"\r\n              id=\"sanderinactive\"\r\n              value=\"0\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.sander === 0 ? true : false}\r\n            />\r\n            <Form.Check\r\n              custom\r\n              type=\"radio\"\r\n              label=\"All\"\r\n              name=\"sander\"\r\n              id=\"sanderall\"\r\n              value=\"2\"\r\n              onChange={onChange}\r\n              className={\"elements\"}\r\n              checked={filter.sander === 2 ? true : false}\r\n            />\r\n          </AccordionItem>\r\n        </Accordion>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default TrainList;\r\n","import React, { Component } from \"react\";\r\nimport \"react-light-accordion/demo/css/index.css\";\r\nimport \"./styles.scss\";\r\nimport TrainList, { BasicFilter, AdvanceFilter } from \"../SideMenuItems\";\r\n\r\nexport default class SideMenu extends Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n  }\r\n\r\n  render() {\r\n    return (\r\n      <div className=\"containersidemenu\">\r\n        <TrainList\r\n          onTrainSelect={this.props.onTrainSelect}\r\n          trainno={this.props.trainno}\r\n          trainList={this.props.trainList}\r\n        />\r\n        <hr />\r\n        <BasicFilter\r\n          onChange={this.props.onChange}\r\n          filter={this.props.basicFilter}\r\n          clearBasicFilter={this.props.clearBasicFilter}\r\n          selectedTab={this.props.selectedTab}\r\n        />\r\n        <hr />\r\n        {this.props.advanceFilter && (\r\n          <AdvanceFilter\r\n            onChange={this.props.onChangeAdvanced}\r\n            filter={this.props.advancedFilter}\r\n            clearAdvancedFilter={this.props.clearAdvancedFilter}\r\n          />\r\n        )}\r\n        <br />\r\n        {/* <NavLink to={\"/home\"}>Go to home</NavLink> */}\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","import { createSelector } from \"reselect\";\r\n\r\nconst selectDetailView = () => (state) => state.get(\"detailViewData\");\r\n\r\nconst selectCommonDetails = () =>\r\n  createSelector(selectDetailView(), (state) => state.get(\"reducerCommon\"));\r\n\r\nconst selectMapDetails = () =>\r\n  createSelector(selectDetailView(), (state) => state.get(\"reducerMap\"));\r\n\r\nconst selectTimetrendDetails = () =>\r\n  createSelector(selectDetailView(), (state) => state.get(\"reducerTimetrend\"));\r\n\r\nconst basicFilterSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) => state.get(\"filter\"));\r\n\r\nconst advancedFilterSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) => state.get(\"filterAdvanced\"));\r\n\r\nconst loadingTimetrendSelector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) => state.get(\"loading\"));\r\n\r\nconst selectedMainTrendSelector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"selectedMainTrend\")\r\n  );\r\n\r\nconst selectedOverlaysTrendSelector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"selectedOverlaysTrend\")\r\n  );\r\n\r\nconst timetrendSlip1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSlip1\")\r\n  );\r\n\r\nconst timetrendSlip2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSlip2\")\r\n  );\r\n\r\nconst timetrendSpeed1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSpeed1\")\r\n  );\r\n\r\nconst timetrendSpeed2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSpeed2\")\r\n  );\r\n\r\nconst timetrendEffort1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffort1\")\r\n  );\r\n\r\nconst timetrendEffort2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffort2\")\r\n  );\r\n\r\nconst timetrendEffortDriving1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortDriving1\")\r\n  );\r\n\r\nconst timetrendEffortDriving2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortDriving2\")\r\n  );\r\n\r\nconst timetrendEffortBraking1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBraking1\")\r\n  );\r\n\r\nconst timetrendEffortBraking2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBraking2\")\r\n  );\r\n\r\nconst timetrendEffortBrakingMech1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBrakingMech1\")\r\n  );\r\n\r\nconst timetrendEffortBrakingMech2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBrakingMech2\")\r\n  );\r\n\r\nconst ttDrivingTrailerVel1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataDrivingTrailerVel1\")\r\n  );\r\nconst ttEffortReference1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataEffortReference1\")\r\n  );\r\nconst ttEffortReference2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataEffortReference2\")\r\n  );\r\nconst ttSlipPower1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataSlipPower1\")\r\n  );\r\nconst ttSlipPower2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataSlipPower2\")\r\n  );\r\nconst ttPowerBrakingMechanical1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataPowerBrakingMechanical1\")\r\n  );\r\nconst ttPowerBrakingMechanical2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataPowerBrakingMechanical2\")\r\n  );\r\nconst ttAirPressureBrakeCylinder1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataAirPressureBrakeCylinder1\")\r\n  );\r\nconst ttAirPressureBrakeCylinder2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataAirPressureBrakeCylinder2\")\r\n  );\r\nconst ttAmplitudeTorsionalOscillation1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataAmplitudeTorsionalOscillation1\")\r\n  );\r\nconst ttAmplitudeTorsionalOscillation2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataAmplitudeTorsionalOscillation2\")\r\n  );\r\n\r\nconst timetrendSelector = () =>\r\n  createSelector(\r\n    selectedMainTrendSelector(),\r\n    selectedOverlaysTrendSelector(),\r\n    timetrendSlip1Selector(),\r\n    timetrendSlip2Selector(),\r\n    timetrendSpeed1Selector(),\r\n    timetrendSpeed2Selector(),\r\n    timetrendEffort1Selector(),\r\n    timetrendEffort2Selector(),\r\n    timetrendEffortDriving1Selector(),\r\n    timetrendEffortDriving2Selector(),\r\n    timetrendEffortBraking1Selector(),\r\n    timetrendEffortBraking2Selector(),\r\n    timetrendEffortBrakingMech1Selector(),\r\n    timetrendEffortBrakingMech2Selector(),\r\n    ttDrivingTrailerVel1Selector(),\r\n    ttEffortReference1Selector(),\r\n    ttEffortReference2Selector(),\r\n    ttSlipPower1Selector(),\r\n    ttSlipPower2Selector(),\r\n    ttPowerBrakingMechanical1Selector(),\r\n    ttPowerBrakingMechanical2Selector(),\r\n    ttAirPressureBrakeCylinder1Selector(),\r\n    ttAirPressureBrakeCylinder2Selector(),\r\n    ttAmplitudeTorsionalOscillation1Selector(),\r\n    ttAmplitudeTorsionalOscillation2Selector(),\r\n    (\r\n      selectedMain,\r\n      selectedOverlays,\r\n      slip1,\r\n      slip2,\r\n      speed1,\r\n      speed2,\r\n      effort1,\r\n      effort2,\r\n      effortDriving1,\r\n      effortDriving2,\r\n      effortBraking1,\r\n      effortBraking2,\r\n      effortBrakingMech1,\r\n      effortBrakingMech2,\r\n      drivingTrailerVel1,\r\n      effortReference1,\r\n      effortReference2,\r\n      slipPower1,\r\n      slipPower2,\r\n      powerBrakingMechanical1,\r\n      powerBrakingMechanical2,\r\n      airPressureBrakeCylinder1,\r\n      airPressureBrakeCylinder2,\r\n      amplitudeTorsionalOscillation1,\r\n      amplitudeTorsionalOscillation2\r\n    ) => {\r\n      let chartValues = [];\r\n      if (\r\n        slip1 != null &&\r\n        slip2 != null &&\r\n        speed1 != null &&\r\n        speed2 != null &&\r\n        effort1 != null &&\r\n        effort2 != null &&\r\n        /*effortDriving1 != null &&\r\n        effortDriving2 != null &&\r\n        effortBraking1 != null &&\r\n        effortBraking2 != null &&*/\r\n        effortBrakingMech1 != null &&\r\n        effortBrakingMech2 != null &&\r\n        drivingTrailerVel1 != null &&\r\n        effortReference1 != null &&\r\n        effortReference2 != null &&\r\n        slipPower1 != null &&\r\n        slipPower2 != null &&\r\n        powerBrakingMechanical1 != null &&\r\n        powerBrakingMechanical2 != null &&\r\n        airPressureBrakeCylinder1 != null &&\r\n        airPressureBrakeCylinder2 != null &&\r\n        amplitudeTorsionalOscillation1 != null &&\r\n        amplitudeTorsionalOscillation2 != null\r\n      ) {\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Slip B1\",\r\n            unit: slip1.cfg.unt,\r\n            samptime: slip1.rsi,\r\n          },\r\n          data: slip1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Slip B2\",\r\n            unit: slip2.cfg.unt,\r\n            samptime: slip2.rsi,\r\n          },\r\n          data: slip2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed at Wheel B1\",\r\n            unit: speed1.cfg.unt,\r\n            samptime: speed1.rsi,\r\n          },\r\n          data: speed1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed at Wheel B2\",\r\n            unit: speed2.cfg.unt,\r\n            samptime: speed2.rsi,\r\n          },\r\n          data: speed2.dat,\r\n        });\r\n\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort B1\",\r\n            unit: effort1.cfg.unt,\r\n            samptime: effort1.rsi,\r\n          },\r\n          data: effort1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort B2\",\r\n            unit: effort2.cfg.unt,\r\n            samptime: effort2.rsi,\r\n          },\r\n          data: effort2.dat,\r\n        });\r\n\r\n        /*chartValues.push({\r\n          config: {\r\n            label: \"EffortDriving B1\",\r\n            unit: effortDriving1.cfg.unt,\r\n            samptime: effortDriving1.rsi,\r\n          },\r\n          data: effortDriving1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"EffortDriving B2\",\r\n            unit: effortDriving2.cfg.unt,\r\n            samptime: effortDriving2.rsi,\r\n          },\r\n          data: effortDriving2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"EffortBraking B1\",\r\n            unit: effortBraking1.cfg.unt,\r\n            samptime: effortBraking1.rsi,\r\n          },\r\n          data: effortBraking1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"EffortBraking B2\",\r\n            unit: effortBraking2.cfg.unt,\r\n            samptime: effortBraking2.rsi,\r\n          },\r\n          data: effortBraking2.dat,\r\n        });*/\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort Mech. Brake B1\",\r\n            unit: effortBrakingMech1.cfg.unt,\r\n            samptime: effortBrakingMech1.rsi,\r\n          },\r\n          data: effortBrakingMech1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort Mech. Brake B2\",\r\n            unit: effortBrakingMech2.cfg.unt,\r\n            samptime: effortBrakingMech2.rsi,\r\n          },\r\n          data: effortBrakingMech2.dat,\r\n        });\r\n\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed Driving Trailer B1\",\r\n            unit: drivingTrailerVel1.cfg.unt,\r\n            samptime: drivingTrailerVel1.rsi,\r\n          },\r\n          data: drivingTrailerVel1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed Driving Trailer B2\",\r\n            unit: drivingTrailerVel1.cfg.unt,\r\n            samptime: drivingTrailerVel1.rsi,\r\n          },\r\n          data: drivingTrailerVel1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort Reference B1\",\r\n            unit: effortReference1.cfg.unt,\r\n            samptime: effortReference1.rsi,\r\n          },\r\n          data: effortReference1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Effort Reference B2\",\r\n            unit: effortReference2.cfg.unt,\r\n            samptime: effortReference2.rsi,\r\n          },\r\n          data: effortReference2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Power Slip B1\",\r\n            unit: slipPower1.cfg.unt,\r\n            samptime: slipPower1.rsi,\r\n          },\r\n          data: slipPower1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Power Slip B2\",\r\n            unit: slipPower2.cfg.unt,\r\n            samptime: slipPower2.rsi,\r\n          },\r\n          data: slipPower2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Power Mechanical Brake B1\",\r\n            unit: powerBrakingMechanical1.cfg.unt,\r\n            samptime: powerBrakingMechanical1.rsi,\r\n          },\r\n          data: powerBrakingMechanical1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Power Mechanical Brake B2\",\r\n            unit: powerBrakingMechanical2.cfg.unt,\r\n            samptime: powerBrakingMechanical2.rsi,\r\n          },\r\n          data: powerBrakingMechanical2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Pressure Brake Cyl. B1\",\r\n            unit: airPressureBrakeCylinder1.cfg.unt,\r\n            samptime: airPressureBrakeCylinder1.rsi,\r\n          },\r\n          data: airPressureBrakeCylinder1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Pressure Brake Cyl. B2\",\r\n            unit: airPressureBrakeCylinder2.cfg.unt,\r\n            samptime: airPressureBrakeCylinder2.rsi,\r\n          },\r\n          data: airPressureBrakeCylinder2.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Torsional Osc. Ampl. B1\",\r\n            unit: amplitudeTorsionalOscillation1.cfg.unt,\r\n            samptime: amplitudeTorsionalOscillation1.rsi,\r\n          },\r\n          data: amplitudeTorsionalOscillation1.dat,\r\n        });\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Torsional Osc. Ampl. B2\",\r\n            unit: amplitudeTorsionalOscillation2.cfg.unt,\r\n            samptime: amplitudeTorsionalOscillation2.rsi,\r\n          },\r\n          data: amplitudeTorsionalOscillation2.dat,\r\n        });\r\n      } else {\r\n        let result = [];\r\n        selectedMain !== null && result.push(selectedMain);\r\n        selectedOverlays !== null && result.push(...selectedOverlays);\r\n\r\n        result.map((value) => {\r\n          switch (value) {\r\n            case \"Slip\":\r\n              if (slip1 !== null && slip1 !== undefined && slip1.length !== 0) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Slip B1\",\r\n                    unit: slip1.cfg.unt,\r\n                    samptime: slip1.rsi,\r\n                  },\r\n                  data: slip1.dat,\r\n                });\r\n              }\r\n              if (slip2 !== null && slip2 !== undefined && slip2.length !== 0) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Slip B2\",\r\n                    unit: slip2.cfg.unt,\r\n                    samptime: slip2.rsi,\r\n                  },\r\n                  data: slip2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Speed at Wheel\":\r\n              if (\r\n                speed1 !== null &&\r\n                speed1 !== undefined &&\r\n                speed1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Speed at Wheel B1\",\r\n                    unit: speed1.cfg.unt,\r\n                    samptime: speed1.rsi,\r\n                  },\r\n                  data: speed1.dat,\r\n                });\r\n              }\r\n              if (\r\n                speed2 !== null &&\r\n                speed2 !== undefined &&\r\n                speed2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Speed at Wheel B2\",\r\n                    unit: speed2.cfg.unt,\r\n                    samptime: speed2.rsi,\r\n                  },\r\n                  data: speed2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Effort\":\r\n              if (\r\n                effort1 !== null &&\r\n                effort1 !== undefined &&\r\n                effort1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort B1\",\r\n                    unit: effort1.cfg.unt,\r\n                    samptime: effort1.rsi,\r\n                  },\r\n                  data: effort1.dat,\r\n                });\r\n              }\r\n              if (\r\n                effort2 !== null &&\r\n                effort2 !== undefined &&\r\n                effort2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort B2\",\r\n                    unit: effort2.cfg.unt,\r\n                    samptime: effort2.rsi,\r\n                  },\r\n                  data: effort2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            /*case \"EffortDriving\":\r\n              if (\r\n                effortDriving1 !== null &&\r\n                effortDriving1 !== undefined &&\r\n                effortDriving1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"EffortDriving B1\",\r\n                    unit: effortDriving1.cfg.unt,\r\n                    samptime: effortDriving1.rsi,\r\n                  },\r\n                  data: effortDriving1.dat,\r\n                });\r\n              }\r\n              if (\r\n                effortDriving2 !== null &&\r\n                effortDriving2 !== undefined &&\r\n                effortDriving2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"EffortDriving B2\",\r\n                    unit: effortDriving2.cfg.unt,\r\n                    samptime: effortDriving2.rsi,\r\n                  },\r\n                  data: effortDriving2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"EffortBraking\":\r\n              if (\r\n                effortBraking1 !== null &&\r\n                effortBraking1 !== undefined &&\r\n                effortBraking1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"EffortBraking B1\",\r\n                    unit: effortBraking1.cfg.unt,\r\n                    samptime: effortBraking1.rsi,\r\n                  },\r\n                  data: effortBraking1.dat,\r\n                });\r\n              }\r\n              if (\r\n                effortBraking2 !== null &&\r\n                effortBraking2 !== undefined &&\r\n                effortBraking2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"EffortBraking B2\",\r\n                    unit: effortBraking2.cfg.unt,\r\n                    samptime: effortBraking2.rsi,\r\n                  },\r\n                  data: effortBraking2.dat,\r\n                });\r\n              }\r\n              break;*/\r\n\r\n            case \"Effort Mech. Brake\":\r\n              if (\r\n                effortBrakingMech1 !== null &&\r\n                effortBrakingMech1 !== undefined &&\r\n                effortBrakingMech1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort Mech. Brake B1\",\r\n                    unit: effortBrakingMech1.cfg.unt,\r\n                    samptime: effortBrakingMech1.rsi,\r\n                  },\r\n                  data: effortBrakingMech1.dat,\r\n                });\r\n              }\r\n              if (\r\n                effortBrakingMech2 !== null &&\r\n                effortBrakingMech2 !== undefined &&\r\n                effortBrakingMech2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort Mech. Brake B2\",\r\n                    unit: effortBrakingMech2.cfg.unt,\r\n                    samptime: effortBrakingMech2.rsi,\r\n                  },\r\n                  data: effortBrakingMech2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Speed Driving Trailer\":\r\n              if (\r\n                drivingTrailerVel1 !== null &&\r\n                drivingTrailerVel1 !== undefined &&\r\n                drivingTrailerVel1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Speed Driving Trailer B1\",\r\n                    unit: drivingTrailerVel1.cfg.unt,\r\n                    samptime: drivingTrailerVel1.rsi,\r\n                  },\r\n                  data: drivingTrailerVel1.dat,\r\n                });\r\n              }\r\n              if (\r\n                drivingTrailerVel1 !== null &&\r\n                drivingTrailerVel1 !== undefined &&\r\n                drivingTrailerVel1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Speed Driving Trailer B2\",\r\n                    unit: drivingTrailerVel1.cfg.unt,\r\n                    samptime: drivingTrailerVel1.rsi,\r\n                  },\r\n                  data: drivingTrailerVel1.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Effort Reference\":\r\n              if (\r\n                effortReference1 !== null &&\r\n                effortReference1 !== undefined &&\r\n                effortReference1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort Reference B1\",\r\n                    unit: effortReference1.cfg.unt,\r\n                    samptime: effortReference1.rsi,\r\n                  },\r\n                  data: effortReference1.dat,\r\n                });\r\n              }\r\n              if (\r\n                effortReference2 !== null &&\r\n                effortReference2 !== undefined &&\r\n                effortReference2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Effort Reference B2\",\r\n                    unit: effortReference2.cfg.unt,\r\n                    samptime: effortReference2.rsi,\r\n                  },\r\n                  data: effortReference2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Power Slip\":\r\n              if (\r\n                slipPower1 !== null &&\r\n                slipPower1 !== undefined &&\r\n                slipPower1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Power Slip B1\",\r\n                    unit: slipPower1.cfg.unt,\r\n                    samptime: slipPower1.rsi,\r\n                  },\r\n                  data: slipPower1.dat,\r\n                });\r\n              }\r\n              if (\r\n                slipPower2 !== null &&\r\n                slipPower2 !== undefined &&\r\n                slipPower2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Power Slip B2\",\r\n                    unit: slipPower2.cfg.unt,\r\n                    samptime: slipPower2.rsi,\r\n                  },\r\n                  data: slipPower2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Power Mechanical Brake\":\r\n              if (\r\n                powerBrakingMechanical1 !== null &&\r\n                powerBrakingMechanical1 !== undefined &&\r\n                powerBrakingMechanical1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Power Mechanical Brake B1\",\r\n                    unit: powerBrakingMechanical1.cfg.unt,\r\n                    samptime: powerBrakingMechanical1.rsi,\r\n                  },\r\n                  data: powerBrakingMechanical1.dat,\r\n                });\r\n              }\r\n              if (\r\n                powerBrakingMechanical2 !== null &&\r\n                powerBrakingMechanical2 !== undefined &&\r\n                powerBrakingMechanical2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Power Mechanical Brake B2\",\r\n                    unit: powerBrakingMechanical2.cfg.unt,\r\n                    samptime: powerBrakingMechanical2.rsi,\r\n                  },\r\n                  data: powerBrakingMechanical2.dat,\r\n                });\r\n              }\r\n              break;\r\n            case \"Pressure Brake Cyl.\":\r\n              if (\r\n                airPressureBrakeCylinder1 !== null &&\r\n                airPressureBrakeCylinder1 !== undefined &&\r\n                airPressureBrakeCylinder1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Pressure Brake Cyl. B1\",\r\n                    unit: airPressureBrakeCylinder1.cfg.unt,\r\n                    samptime: airPressureBrakeCylinder1.rsi,\r\n                  },\r\n                  data: airPressureBrakeCylinder1.dat,\r\n                });\r\n              }\r\n              if (\r\n                airPressureBrakeCylinder2 !== null &&\r\n                airPressureBrakeCylinder2 !== undefined &&\r\n                airPressureBrakeCylinder2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Pressure Brake Cyl. B2\",\r\n                    unit: airPressureBrakeCylinder2.cfg.unt,\r\n                    samptime: airPressureBrakeCylinder2.rsi,\r\n                  },\r\n                  data: airPressureBrakeCylinder2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            case \"Torsional Osc. Ampl.\":\r\n              if (\r\n                amplitudeTorsionalOscillation1 !== null &&\r\n                amplitudeTorsionalOscillation1 !== undefined &&\r\n                amplitudeTorsionalOscillation1.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Torsional Osc. Ampl. B1\",\r\n                    unit: amplitudeTorsionalOscillation1.cfg.unt,\r\n                    samptime: amplitudeTorsionalOscillation1.rsi,\r\n                  },\r\n                  data: amplitudeTorsionalOscillation1.dat,\r\n                });\r\n              }\r\n              if (\r\n                amplitudeTorsionalOscillation2 !== null &&\r\n                amplitudeTorsionalOscillation2 !== undefined &&\r\n                amplitudeTorsionalOscillation2.length !== 0\r\n              ) {\r\n                chartValues.push({\r\n                  config: {\r\n                    label: \"Torsional Osc. Ampl. B2\",\r\n                    unit: amplitudeTorsionalOscillation2.cfg.unt,\r\n                    samptime: amplitudeTorsionalOscillation2.rsi,\r\n                  },\r\n                  data: amplitudeTorsionalOscillation2.dat,\r\n                });\r\n              }\r\n              break;\r\n\r\n            default:\r\n              break;\r\n          }\r\n        });\r\n      }\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\nconst filteredTimetrendSelector = () =>\r\n  createSelector(\r\n    timetrendSelector(),\r\n    selectedMainTrendSelector(),\r\n    selectedOverlaysTrendSelector(),\r\n    basicFilterSelector(),\r\n    advancedFilterSelector(),\r\n    (graphData, selectedMain, selectedOverlays, filter, advancedFilter) => {\r\n      let chartValues = [];\r\n      if (filter.bogie === 1 || filter.bogie === 3) {\r\n        graphData &&\r\n          chartValues.push(\r\n            ...graphData.filter(\r\n              (item) => item.config.label === selectedMain + \" B1\"\r\n            )\r\n          );\r\n      }\r\n\r\n      if (filter.bogie === 2 || filter.bogie === 3) {\r\n        graphData &&\r\n          chartValues.push(\r\n            ...graphData.filter(\r\n              (item) => item.config.label === selectedMain + \" B2\"\r\n            )\r\n          );\r\n      }\r\n\r\n      selectedOverlays &&\r\n        selectedOverlays.map(\r\n          (value) => (\r\n            (filter.bogie === 1 || filter.bogie === 3) &&\r\n              chartValues.push(\r\n                ...graphData.filter(\r\n                  (item) => item.config.label === value + \" B1\"\r\n                )\r\n              ),\r\n            (filter.bogie === 2 || filter.bogie === 3) &&\r\n              chartValues.push(\r\n                ...graphData.filter(\r\n                  (item) => item.config.label === value + \" B2\"\r\n                )\r\n              )\r\n          )\r\n        );\r\n\r\n      chartValues = JSON.parse(JSON.stringify(chartValues));\r\n\r\n      //for (let j = 0; j < chartValues.length; j += 1) {\r\n      //for (let i = 0; i < chartValues[j].data.length; i += 1) {\r\n      chartValues.map((value, j) => {\r\n        chartValues[j].data.map((value, i) => {\r\n          //Operation filter\r\n          let flag = 0;\r\n          filter.operation.map((value, index) => {\r\n            if (chartValues[j].data[i].ftr.opm === value && flag === 0) {\r\n              flag = 1;\r\n            }\r\n          });\r\n          if (flag === 0) {\r\n            chartValues[j].data[i].min = null;\r\n            chartValues[j].data[i].max = null;\r\n            chartValues[j].data[i].avg = null;\r\n          }\r\n          //Temperature filter\r\n          flag = 0;\r\n          if (advancedFilter.temperature) {\r\n            advancedFilter.temperature.map((value, index) => {\r\n              if (chartValues[j].data[i].ftr.tmp === value && flag === 0) {\r\n                flag = 1;\r\n              }\r\n            });\r\n            if (flag === 0) {\r\n              chartValues[j].data[i].min = null;\r\n              chartValues[j].data[i].max = null;\r\n              chartValues[j].data[i].avg = null;\r\n            }\r\n\r\n            //DrivingTrailerVelocity filter\r\n            if (advancedFilter.drivingtrailervelocity === 0) {\r\n              if (chartValues[j].data[i].ftr.dtv === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.drivingtrailervelocity === 1) {\r\n              if (chartValues[j].data[i].ftr.dtv === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n\r\n            //Sandar filter\r\n            if (advancedFilter.sander === 0) {\r\n              if (chartValues[j].data[i].ftr.sdr === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.sander === 1) {\r\n              if (chartValues[j].data[i].ftr.sdr === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n\r\n            //TOprotection filter(Bogie)\r\n            let value = chartValues[j].data[i].ftr.top;\r\n            if (filter.bogie === 3) value = chartValues[j].data[i].ftr.toa;\r\n\r\n            if (advancedFilter.toprotection === 0) {\r\n              if (value === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.toprotection === 1) {\r\n              if (value === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n\r\n            //AdhesionControl filter(Bogie)\r\n            /*value = chartValues[j].data[i].ftr.ac;\r\n            if (filter.bogie === 3) value = chartValues[j].data[i].ftr.ac;\r\n\r\n            if (advancedFilter.adhesioncontrol === 0) {\r\n              if (value === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.adhesioncontrol === 1) {\r\n              if (value === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }*/\r\n\r\n            //SlingBrake filter(Bogie)\r\n            /*value = chartValues[j].data[i].ftr.sb;\r\n            if (filter.bogie === 3)\r\n              value = chartValues[j].data[i].ftr.sba;\r\n\r\n            if (advancedFilter.slingbrake === 0) {\r\n              if (value === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.slingbrake === 1) {\r\n              if (value === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }*/\r\n            //Anti slip brake filter(Bogie)\r\n            value = chartValues[j].data[i].ftr.asb;\r\n            if (filter.bogie === 3) value = chartValues[j].data[i].ftr.asa;\r\n\r\n            if (advancedFilter.antislipbrake === 0) {\r\n              if (value === 1) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n            if (advancedFilter.antislipbrake === 1) {\r\n              if (value === 0) {\r\n                chartValues[j].data[i].min = null;\r\n                chartValues[j].data[i].max = null;\r\n                chartValues[j].data[i].avg = null;\r\n              }\r\n            }\r\n          }\r\n        });\r\n      });\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\nconst loadingSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) => state.get(\"loading\"));\r\nconst loadingScatterB2Selector = () =>\r\n  createSelector(selectCommonDetails(), (state) =>\r\n    state.get(\"loadingScatterB2\")\r\n  );\r\n\r\nconst scatterplotSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) =>\r\n    state.get(\"scatterplotData\")\r\n  );\r\n\r\n//--------------------------\r\nconst scatterplot2Selector = () =>\r\n  createSelector(selectCommonDetails(), (state) =>\r\n    state.get(\"scatterplotData2\")\r\n  );\r\n\r\nconst scatterplotBothBogieSelector = () =>\r\n  createSelector(\r\n    scatterplotSelector(),\r\n    scatterplot2Selector(),\r\n    (scatterplotData1, scatterplotData2) => {\r\n      let scatterData = [];\r\n\r\n      if (\r\n        scatterplotData1 !== null &&\r\n        scatterplotData2 !== null &&\r\n        scatterplotData1.length !== 0 &&\r\n        scatterplotData2.length !== 0\r\n      ) {\r\n        scatterData.push(scatterplotData1[0]);\r\n        scatterData.push(scatterplotData2[0]);\r\n      }\r\n      return scatterData;\r\n    }\r\n  );\r\n\r\nconst filteredScatterSelector = () =>\r\n  createSelector(\r\n    scatterplotBothBogieSelector(),\r\n    basicFilterSelector(),\r\n    advancedFilterSelector(),\r\n    (graphData, filter, advancedFilter) => {\r\n      let chartValues = [],\r\n        bogie1,\r\n        bogie2;\r\n      if (graphData.length !== 0 && advancedFilter.temperature) {\r\n        let confg = graphData[0].cfg;\r\n        let docType = graphData[0].doc;\r\n        let resampleInterval = graphData[0].rsi;\r\n\r\n        bogie1 = graphData[0].dat.filter((item) => {\r\n          return (\r\n            filter.operation.includes(item.ftr.opm) &&\r\n            advancedFilter.temperature.includes(item.ftr.tmp) &&\r\n            (advancedFilter.drivingtrailervelocity === item.ftr.dtv ||\r\n              advancedFilter.drivingtrailervelocity === 2) &&\r\n            (advancedFilter.sander === item.ftr.sdr ||\r\n              advancedFilter.sander === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.toprotection === item.ftr.toa ||\r\n                advancedFilter.toprotection === 2\r\n              : advancedFilter.toprotection === item.ftr.top ||\r\n                advancedFilter.toprotection === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.antislipbrake === item.ftr.asa ||\r\n                advancedFilter.antislipbrake === 2\r\n              : advancedFilter.antislipbrake === item.ftr.asb ||\r\n                advancedFilter.antislipbrake === 2)\r\n            /*(filter.bogie === 3\r\n              ? advancedFilter.adhesioncontrol === item.ftr.aca ||\r\n                advancedFilter.adhesioncontrol === 2\r\n              : advancedFilter.adhesioncontrol === item.ftr.ac ||\r\n                advancedFilter.adhesioncontrol === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.slingbrake === item.ftr.sba ||\r\n                advancedFilter.slingbrake === 2\r\n              : advancedFilter.slingbrake === item.ftr.sb ||\r\n                advancedFilter.slingbrake === 2)*/\r\n          );\r\n        });\r\n        bogie1 = {\r\n          documentType: docType,\r\n          resampleInterval: resampleInterval,\r\n          config: confg,\r\n          data: bogie1,\r\n        };\r\n\r\n        let confg2 = graphData[1].cfg;\r\n        let docType2 = graphData[1].doc;\r\n        let resampleInterval2 = graphData[1].rsi;\r\n\r\n        bogie2 = graphData[1].dat.filter((item) => {\r\n          return (\r\n            filter.operation.includes(item.ftr.opm) &&\r\n            advancedFilter.temperature.includes(item.ftr.tmp) &&\r\n            (advancedFilter.drivingtrailervelocity === item.ftr.dtv ||\r\n              advancedFilter.drivingtrailervelocity === 2) &&\r\n            (advancedFilter.sander === item.ftr.sdr ||\r\n              advancedFilter.sander === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.toprotection === item.ftr.toa ||\r\n                advancedFilter.toprotection === 2\r\n              : advancedFilter.toprotection === item.ftr.top ||\r\n                advancedFilter.toprotection === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.antislipbrake === item.ftr.asa ||\r\n                advancedFilter.antislipbrake === 2\r\n              : advancedFilter.antislipbrake === item.ftr.asb ||\r\n                advancedFilter.antislipbrake === 2)\r\n            /*(filter.bogie === 3\r\n              ? advancedFilter.adhesioncontrol === item.ftr.aca ||\r\n                advancedFilter.adhesioncontrol === 2\r\n              : advancedFilter.adhesioncontrol === item.ftr.ac ||\r\n                advancedFilter.adhesioncontrol === 2) &&\r\n            (filter.bogie === 3\r\n              ? advancedFilter.slingbrake === item.ftr.sba ||\r\n                advancedFilter.slingbrake === 2\r\n              : advancedFilter.slingbrake === item.ftr.sb ||\r\n                advancedFilter.slingbrake === 2)*/\r\n          );\r\n        });\r\n        bogie2 = {\r\n          documentType: docType2,\r\n          resampleInterval: resampleInterval2,\r\n          config: confg2,\r\n          data: bogie2,\r\n        };\r\n\r\n        if (filter.bogie === 1) {\r\n          chartValues.push(bogie1);\r\n        } else if (filter.bogie === 2) {\r\n          chartValues.push(bogie2);\r\n        } else if (filter.bogie === 3) {\r\n          chartValues.push(bogie1);\r\n          chartValues.push(bogie2);\r\n        }\r\n      }\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\n//-----------------------------\r\n\r\nconst selectedMainScatterSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) =>\r\n    state.get(\"selectedMainScatter\")\r\n  );\r\n\r\nconst histogramSelector = () =>\r\n  createSelector(selectCommonDetails(), (state) => state.get(\"histogramData\"));\r\n\r\n//-----------------------------\r\n\r\nconst loadingMapSelector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"loading\"));\r\n\r\nconst mapTotalRunsSelector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"totalRuns\"));\r\n\r\nconst mapSlip1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlip1\"));\r\n\r\nconst mapSlip2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlip2\"));\r\n\r\nconst mapSpeed1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSpeed1\"));\r\n\r\nconst mapSpeed2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSpeed2\"));\r\n\r\nconst mapEffort1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffort1\"));\r\n\r\nconst mapEffort2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffort2\"));\r\n\r\nconst mapEffortDriving1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortDriving1\"));\r\n\r\nconst mapEffortDriving2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortDriving2\"));\r\n\r\nconst mapEffortBraking1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortBraking1\"));\r\n\r\nconst mapEffortBraking2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortBraking2\"));\r\n\r\nconst mapEffortBrakingMech1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortBrakingMech1\")\r\n  );\r\n\r\nconst mapEffortBrakingMech2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortBrakingMech2\")\r\n  );\r\n\r\nconst mapDrivingTrailerVel1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapDrivingTrailerVel1\")\r\n  );\r\n\r\nconst mapEffortReference1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortReference1\")\r\n  );\r\n\r\nconst mapEffortReference2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortReference2\")\r\n  );\r\n\r\nconst mapSlipPower1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlipPower1\"));\r\n\r\nconst mapSlipPower2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlipPower2\"));\r\n\r\nconst mapPowerBrakingMechanical1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapPowerBrakingMechanical1\")\r\n  );\r\n\r\nconst mapPowerBrakingMechanical2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapPowerBrakingMechanical2\")\r\n  );\r\n\r\nconst mapAirPressureBrakeCylinder1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapAirPressureBrakeCylinder1\")\r\n  );\r\n\r\nconst mapAirPressureBrakeCylinder2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapAirPressureBrakeCylinder2\")\r\n  );\r\n\r\nconst mapAmplitudeTorsionalOscillation1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapAmplitudeTorsionalOscillation1\")\r\n  );\r\n\r\nconst mapAmplitudeTorsionalOscillation2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapAmplitudeTorsionalOscillation2\")\r\n  );\r\n\r\nconst mapSelector = () =>\r\n  createSelector(\r\n    selectedMainTrendSelector(),\r\n    basicFilterSelector(),\r\n    mapSlip1Selector(),\r\n    mapSlip2Selector(),\r\n    mapSpeed1Selector(),\r\n    mapSpeed2Selector(),\r\n    mapEffort1Selector(),\r\n    mapEffort2Selector(),\r\n    mapEffortDriving1Selector(),\r\n    mapEffortDriving2Selector(),\r\n    mapEffortBraking1Selector(),\r\n    mapEffortBraking2Selector(),\r\n    mapEffortBrakingMech1Selector(),\r\n    mapEffortBrakingMech2Selector(),\r\n    mapDrivingTrailerVel1Selector(),\r\n    mapEffortReference1Selector(),\r\n    mapEffortReference2Selector(),\r\n    mapSlipPower1Selector(),\r\n    mapSlipPower2Selector(),\r\n    mapPowerBrakingMechanical1Selector(),\r\n    mapPowerBrakingMechanical2Selector(),\r\n    mapAirPressureBrakeCylinder1Selector(),\r\n    mapAirPressureBrakeCylinder2Selector(),\r\n    mapAmplitudeTorsionalOscillation1Selector(),\r\n    mapAmplitudeTorsionalOscillation2Selector(),\r\n    (\r\n      selectedMain,\r\n      filter,\r\n      slip1,\r\n      slip2,\r\n      speed1,\r\n      speed2,\r\n      effort1,\r\n      effort2,\r\n      effortDriving1,\r\n      effortDriving2,\r\n      effortBraking1,\r\n      effortBraking2,\r\n      effortBrakingMech1,\r\n      effortBrakingMech2,\r\n      drivingTrailerVel1,\r\n      effortReference1,\r\n      effortReference2,\r\n      slipPower1,\r\n      slipPower2,\r\n      powerBrakingMechanical1,\r\n      powerBrakingMechanical2,\r\n      airPressureBrakeCylinder1,\r\n      airPressureBrakeCylinder2,\r\n      amplitudeTorsionalOscillation1,\r\n      amplitudeTorsionalOscillation2\r\n    ) => {\r\n      switch (selectedMain) {\r\n        case \"Slip\":\r\n          if (filter.bogie === 1) {\r\n            if (slip1 !== null) return slip1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (slip2 !== null) return slip2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (slip1 !== null) return slip1;\r\n            if (slip2 !== null) return slip2;\r\n          }\r\n          break;\r\n        case \"Speed at Wheel\":\r\n          if (filter.bogie === 1) {\r\n            if (speed1 !== null) return speed1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (speed2 !== null) return speed2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (speed1 !== null) return speed1;\r\n            if (speed2 !== null) return speed2;\r\n          }\r\n          break;\r\n\r\n        case \"Effort\":\r\n          if (filter.bogie === 1) {\r\n            if (effort1 !== null) return effort1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effort2 !== null) return effort2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effort1 !== null) return effort1;\r\n            if (effort2 !== null) return effort2;\r\n          }\r\n          break;\r\n\r\n        /*case \"EffortDriving\":\r\n          if (filter.bogie === 1) {\r\n            if (effortDriving1 !== null) return effortDriving1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortDriving2 !== null) return effortDriving2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortDriving1 !== null) return effortDriving1;\r\n            if (effortDriving2 !== null) return effortDriving2;\r\n          }\r\n          break;\r\n\r\n        case \"EffortBraking\":\r\n          if (filter.bogie === 1) {\r\n            if (effortBraking1 !== null) return effortBraking1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortBraking2 !== null) return effortBraking2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortBraking1 !== null) return effortBraking1;\r\n            if (effortBraking2 !== null) return effortBraking2;\r\n          }\r\n          break;*/\r\n\r\n        case \"Effort Mech. Brake\":\r\n          if (filter.bogie === 1) {\r\n            if (effortBrakingMech1 !== null) return effortBrakingMech1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortBrakingMech2 !== null) return effortBrakingMech2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortBrakingMech1 !== null) return effortBrakingMech1;\r\n            if (effortBrakingMech2 !== null) return effortBrakingMech2;\r\n          }\r\n          break;\r\n\r\n        case \"Speed Driving Trailer\":\r\n          if (filter.bogie === 1) {\r\n            if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n            if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n          }\r\n          break;\r\n        case \"Effort Reference\":\r\n          if (filter.bogie === 1) {\r\n            if (effortReference1 !== null) return effortReference1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortReference2 !== null) return effortReference2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortReference1 !== null) return effortReference1;\r\n            if (effortReference2 !== null) return effortReference2;\r\n          }\r\n          break;\r\n        case \"Power Slip\":\r\n          if (filter.bogie === 1) {\r\n            if (slipPower1 !== null) return slipPower1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (slipPower2 !== null) return slipPower2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (slipPower1 !== null) return slipPower1;\r\n            if (slipPower2 !== null) return slipPower2;\r\n          }\r\n          break;\r\n        case \"Power Mechanical Brake\":\r\n          if (filter.bogie === 1) {\r\n            if (powerBrakingMechanical1 !== null)\r\n              return powerBrakingMechanical1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (powerBrakingMechanical2 !== null)\r\n              return powerBrakingMechanical2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (powerBrakingMechanical1 !== null)\r\n              return powerBrakingMechanical1;\r\n            if (powerBrakingMechanical2 !== null)\r\n              return powerBrakingMechanical2;\r\n          }\r\n          break;\r\n        case \"Pressure Brake Cyl.\":\r\n          if (filter.bogie === 1) {\r\n            if (airPressureBrakeCylinder1 !== null)\r\n              return airPressureBrakeCylinder1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (airPressureBrakeCylinder2 !== null)\r\n              return airPressureBrakeCylinder2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (airPressureBrakeCylinder1 !== null)\r\n              return airPressureBrakeCylinder1;\r\n            if (airPressureBrakeCylinder2 !== null)\r\n              return airPressureBrakeCylinder2;\r\n          }\r\n          break;\r\n        case \"Torsional Osc. Ampl.\":\r\n          if (filter.bogie === 1) {\r\n            if (amplitudeTorsionalOscillation1 !== null)\r\n              return amplitudeTorsionalOscillation1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (amplitudeTorsionalOscillation2 !== null)\r\n              return amplitudeTorsionalOscillation2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (amplitudeTorsionalOscillation1 !== null)\r\n              return amplitudeTorsionalOscillation1;\r\n            if (amplitudeTorsionalOscillation2 !== null)\r\n              return amplitudeTorsionalOscillation2;\r\n          }\r\n          break;\r\n\r\n        default:\r\n          break;\r\n        //return null;\r\n      }\r\n    }\r\n  );\r\n\r\nconst filteredMapSelector = () =>\r\n  createSelector(\r\n    mapSelector(),\r\n    selectedMainTrendSelector(),\r\n    basicFilterSelector(),\r\n    (mapData, selectedMain, filter) => {\r\n      let graphValues = [];\r\n\r\n      return mapData;\r\n    }\r\n  );\r\n\r\nexport {\r\n  loadingSelector,\r\n  timetrendSelector,\r\n  scatterplotSelector,\r\n  basicFilterSelector,\r\n  advancedFilterSelector,\r\n  selectedMainScatterSelector,\r\n  filteredTimetrendSelector,\r\n  histogramSelector,\r\n  loadingTimetrendSelector,\r\n  selectedMainTrendSelector,\r\n  selectedOverlaysTrendSelector,\r\n  timetrendSlip1Selector,\r\n  timetrendSlip2Selector,\r\n  timetrendSpeed1Selector,\r\n  timetrendSpeed2Selector,\r\n  timetrendEffort1Selector,\r\n  timetrendEffort2Selector,\r\n  timetrendEffortDriving1Selector,\r\n  timetrendEffortDriving2Selector,\r\n  timetrendEffortBraking1Selector,\r\n  timetrendEffortBraking2Selector,\r\n  timetrendEffortBrakingMech1Selector,\r\n  timetrendEffortBrakingMech2Selector,\r\n  ttDrivingTrailerVel1Selector,\r\n  ttEffortReference1Selector,\r\n  ttEffortReference2Selector,\r\n  ttSlipPower1Selector,\r\n  ttSlipPower2Selector,\r\n  ttPowerBrakingMechanical1Selector,\r\n  ttPowerBrakingMechanical2Selector,\r\n  ttAirPressureBrakeCylinder1Selector,\r\n  ttAirPressureBrakeCylinder2Selector,\r\n  ttAmplitudeTorsionalOscillation1Selector,\r\n  ttAmplitudeTorsionalOscillation2Selector,\r\n  scatterplotBothBogieSelector,\r\n  filteredScatterSelector,\r\n  loadingScatterB2Selector,\r\n  loadingMapSelector,\r\n  mapTotalRunsSelector,\r\n  mapSlip1Selector,\r\n  mapSlip2Selector,\r\n  mapSpeed1Selector,\r\n  mapSpeed2Selector,\r\n  mapEffort1Selector,\r\n  mapEffort2Selector,\r\n  mapEffortDriving1Selector,\r\n  mapEffortDriving2Selector,\r\n  mapEffortBraking1Selector,\r\n  mapEffortBraking2Selector,\r\n  mapEffortBrakingMech1Selector,\r\n  mapEffortBrakingMech2Selector,\r\n  mapDrivingTrailerVel1Selector,\r\n  mapEffortReference1Selector,\r\n  mapEffortReference2Selector,\r\n  mapSlipPower1Selector,\r\n  mapSlipPower2Selector,\r\n  mapPowerBrakingMechanical1Selector,\r\n  mapPowerBrakingMechanical2Selector,\r\n  mapAirPressureBrakeCylinder1Selector,\r\n  mapAirPressureBrakeCylinder2Selector,\r\n  mapAmplitudeTorsionalOscillation1Selector,\r\n  mapAmplitudeTorsionalOscillation2Selector,\r\n  filteredMapSelector,\r\n};\r\n","import { createSelector } from \"reselect\";\r\n\r\nconst selectTrainView = () => (state) => state.get(\"trainViewData\");\r\nconst selectDetailView = () => (state) => state.get(\"detailViewData\");\r\n\r\nconst selectTrainViewCommonDetails = () =>\r\n  createSelector(selectTrainView(), (state) => state.get(\"reducerCommon\"));\r\n\r\nconst selectedTabSelector = () =>\r\n  createSelector(selectTrainViewCommonDetails(), (state) =>\r\n    state.get(\"selectedTab\")\r\n  );\r\n\r\nconst selectMapDetails = () =>\r\n  createSelector(selectTrainView(), (state) => state.get(\"reducerMap\"));\r\n\r\nconst selectTimetrendDetails = () =>\r\n  createSelector(selectDetailView(), (state) => state.get(\"reducerTimetrend\"));\r\n\r\nconst selectDetailViewCommonDetails = () =>\r\n  createSelector(selectDetailView(), (state) => state.get(\"reducerCommon\"));\r\n\r\nconst loadingMapSelector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"loading\"));\r\n\r\nconst mapSlip1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlip1\"));\r\n\r\nconst mapSlip2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSlip2\"));\r\n\r\nconst mapSpeed1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSpeed1\"));\r\n\r\nconst mapSpeed2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapSpeed2\"));\r\n\r\nconst mapEffort1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffort1\"));\r\n\r\nconst mapEffort2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffort2\"));\r\n\r\nconst mapEffortDriving1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortDriving1\"));\r\n\r\nconst mapEffortDriving2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortDriving2\"));\r\n\r\nconst mapEffortBraking1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortBraking1\"));\r\n\r\nconst mapEffortBraking2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"mapEffortBraking2\"));\r\n\r\nconst mapEffortBrakingMech1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortBrakingMech1\")\r\n  );\r\n\r\nconst mapEffortBrakingMech2Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapEffortBrakingMech2\")\r\n  );\r\n\r\nconst mapDrivingTrailerVel1Selector = () =>\r\n  createSelector(selectMapDetails(), (state) =>\r\n    state.get(\"mapDrivingTrailerVel1\")\r\n  );\r\n\r\nconst mapSelector = () =>\r\n  createSelector(\r\n    selectedMainSignalSelector(),\r\n    filterSelector(),\r\n    mapSlip1Selector(),\r\n    mapSlip2Selector(),\r\n    mapSpeed1Selector(),\r\n    mapSpeed2Selector(),\r\n    mapEffort1Selector(),\r\n    mapEffort2Selector(),\r\n    mapEffortDriving1Selector(),\r\n    mapEffortDriving2Selector(),\r\n    mapEffortBraking1Selector(),\r\n    mapEffortBraking2Selector(),\r\n    mapEffortBrakingMech1Selector(),\r\n    mapEffortBrakingMech2Selector(),\r\n    mapDrivingTrailerVel1Selector(),\r\n    (\r\n      selectedMain,\r\n      filter,\r\n      slip1,\r\n      slip2,\r\n      speed1,\r\n      speed2,\r\n      effort1,\r\n      effort2,\r\n      effortDriving1,\r\n      effortDriving2,\r\n      effortBraking1,\r\n      effortBraking2,\r\n      effortBrakingMech1,\r\n      effortBrakingMech2,\r\n      drivingTrailerVel1\r\n    ) => {\r\n      /*switch (selectedMain) {\r\n        case \"Slip\":\r\n          if (filter.bogie === 1) {\r\n            if (slip1 !== null) return slip1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (slip2 !== null) return slip2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (slip1 !== null) return slip1;\r\n            if (slip2 !== null) return slip2;\r\n          }\r\n          break;\r\n        case \"Speed\":\r\n          if (filter.bogie === 1) {\r\n            if (speed1 !== null) return speed1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (speed2 !== null) return speed2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (speed1 !== null) return speed1;\r\n            if (speed2 !== null) return speed2;\r\n          }\r\n          break;\r\n\r\n        case \"Effort\":\r\n          if (filter.bogie === 1) {\r\n            if (effort1 !== null) return effort1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effort2 !== null) return effort2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effort1 !== null) return effort1;\r\n            if (effort2 !== null) return effort2;\r\n          }\r\n          break;\r\n\r\n        case \"EffortDriving\":\r\n          if (filter.bogie === 1) {\r\n            if (effortDriving1 !== null) return effortDriving1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortDriving2 !== null) return effortDriving2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortDriving1 !== null) return effortDriving1;\r\n            if (effortDriving2 !== null) return effortDriving2;\r\n          }\r\n          break;\r\n\r\n        case \"EffortBraking\":\r\n          if (filter.bogie === 1) {\r\n            if (effortBraking1 !== null) return effortBraking1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortBraking2 !== null) return effortBraking2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortBraking1 !== null) return effortBraking1;\r\n            if (effortBraking2 !== null) return effortBraking2;\r\n          }\r\n          break;\r\n\r\n        case \"EffortBrakingMechanical\":\r\n          if (filter.bogie === 1) {\r\n            if (effortBrakingMech1 !== null) return effortBrakingMech1;\r\n          }\r\n          if (filter.bogie === 2) {\r\n            if (effortBrakingMech2 !== null) return effortBrakingMech2;\r\n          }\r\n          if (filter.bogie === 3) {\r\n            if (effortBrakingMech1 !== null) return effortBrakingMech1;\r\n            if (effortBrakingMech2 !== null) return effortBrakingMech2;\r\n          }\r\n          break;\r\n\r\n        default:\r\n          return null;\r\n      }*/\r\n      if (filter.bogie === 1) {\r\n        if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n      }\r\n      if (filter.bogie === 2) {\r\n        if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n      }\r\n      if (filter.bogie === 3) {\r\n        if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n        if (drivingTrailerVel1 !== null) return drivingTrailerVel1;\r\n      }\r\n    }\r\n  );\r\n\r\nconst filteredMapSelector = () =>\r\n  createSelector(\r\n    mapSelector(),\r\n    selectedMainSignalSelector(),\r\n    filterSelector(),\r\n    (mapData, selectedMain, filter) => {\r\n      let graphValues = [];\r\n\r\n      return mapData;\r\n    }\r\n  );\r\n\r\nconst filteredMapSliderSelector = () =>\r\n  createSelector(mapSelector(), (mapData) => {\r\n    let graphValues = [];\r\n    if (mapData !== undefined && mapData !== null && mapData.rns != undefined)\r\n      mapData.rns.map((obj, index) => {\r\n        graphValues.push(...obj.dat);\r\n      });\r\n    return graphValues;\r\n  });\r\n\r\nconst loadingTimetrendSelector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) => state.get(\"loading\"));\r\n\r\nconst selectedMainSignalSelector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"selectedMainTrend\")\r\n  );\r\n\r\nconst timetrendSlip1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSlip1\")\r\n  );\r\n\r\nconst timetrendSlip2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSlip2\")\r\n  );\r\n\r\nconst timetrendSpeed1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSpeed1\")\r\n  );\r\n\r\nconst timetrendSpeed2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataSpeed2\")\r\n  );\r\n\r\nconst timetrendEffort1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffort1\")\r\n  );\r\n\r\nconst timetrendEffort2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffort2\")\r\n  );\r\n\r\nconst timetrendEffortDriving1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortDriving1\")\r\n  );\r\n\r\nconst timetrendEffortDriving2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortDriving2\")\r\n  );\r\n\r\nconst timetrendEffortBraking1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBraking1\")\r\n  );\r\n\r\nconst timetrendEffortBraking2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBraking2\")\r\n  );\r\n\r\nconst timetrendEffortBrakingMech1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBrakingMech1\")\r\n  );\r\n\r\nconst timetrendEffortBrakingMech2Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"timetrendDataEffortBrakingMech2\")\r\n  );\r\n\r\nconst ttDrivingTrailerVel1Selector = () =>\r\n  createSelector(selectTimetrendDetails(), (state) =>\r\n    state.get(\"ttDataDrivingTrailerVel1\")\r\n  );\r\n\r\nconst timetrendSelector = () =>\r\n  createSelector(\r\n    selectedMainSignalSelector(),\r\n    timetrendSlip1Selector(),\r\n    timetrendSlip2Selector(),\r\n    timetrendSpeed1Selector(),\r\n    timetrendSpeed2Selector(),\r\n    timetrendEffort1Selector(),\r\n    timetrendEffort2Selector(),\r\n    timetrendEffortDriving1Selector(),\r\n    timetrendEffortDriving2Selector(),\r\n    timetrendEffortBraking1Selector(),\r\n    timetrendEffortBraking2Selector(),\r\n    timetrendEffortBrakingMech1Selector(),\r\n    timetrendEffortBrakingMech2Selector(),\r\n    ttDrivingTrailerVel1Selector(),\r\n    (\r\n      selectedMain,\r\n      slip1,\r\n      slip2,\r\n      speed1,\r\n      speed2,\r\n      effort1,\r\n      effort2,\r\n      effortDriving1,\r\n      effortDriving2,\r\n      effortBraking1,\r\n      effortBraking2,\r\n      effortBrakingMech1,\r\n      effortBrakingMech2,\r\n      drivingTrailerVel1\r\n    ) => {\r\n      let chartValues = [];\r\n\r\n      /*switch (selectedMain) {\r\n        case \"Slip\":\r\n          if (slip1 !== null && slip2 !== null) {\r\n            chartValues.push({\r\n              config: { label: \"Slip B1\", unit: slip1.cfg.unt },\r\n              data: slip1.dat\r\n            });\r\n            chartValues.push({\r\n              config: { label: \"Slip B2\", unit: slip2.cfg.unt },\r\n              data: slip2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        case \"Speed\":\r\n          if (speed1 !== null && speed2 !== null) {\r\n            chartValues.push({\r\n              config: { label: \"Speed B1\", unit: speed1.cfg.unt },\r\n              data: speed1.dat\r\n            });\r\n            chartValues.push({\r\n              config: { label: \"Speed B2\", unit: speed2.cfg.unt },\r\n              data: speed2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        case \"Effort\":\r\n          if (effort1 !== null && effort2 !== null) {\r\n            chartValues.push({\r\n              config: {\r\n                label: \"Effort B1\",\r\n                unit: effort1.cfg.unt\r\n              },\r\n              data: effort1.dat\r\n            });\r\n            chartValues.push({\r\n              config: {\r\n                label: \"Effort B2\",\r\n                unit: effort2.cfg.unt\r\n              },\r\n              data: effort2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        case \"EffortDriving\":\r\n          if (effortDriving1 !== null && effortDriving2 !== null) {\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortDriving B1\",\r\n                unit: effortDriving1.cfg.unt\r\n              },\r\n              data: effortDriving1.dat\r\n            });\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortDriving B2\",\r\n                unit: effortDriving2.cfg.unt\r\n              },\r\n              data: effortDriving2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        case \"EffortBraking\":\r\n          if (effortBraking1 !== null && effortBraking2 !== null) {\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortBraking B1\",\r\n                unit: effortBraking1.cfg.unt\r\n              },\r\n              data: effortBraking1.dat\r\n            });\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortBraking B2\",\r\n                unit: effortBraking2.cfg.unt\r\n              },\r\n              data: effortBraking2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        case \"EffortBrakingMechanical\":\r\n          if (effortBrakingMech1 !== null && effortBrakingMech2 !== null) {\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortBrakingMechanical B1\",\r\n                unit: effortBrakingMech1.cfg.unt\r\n              },\r\n              data: effortBrakingMech1.dat\r\n            });\r\n            chartValues.push({\r\n              config: {\r\n                label: \"EffortBrakingMechanical B2\",\r\n                unit: effortBrakingMech2.cfg.unt\r\n              },\r\n              data: effortBrakingMech2.dat\r\n            });\r\n          }\r\n          break;\r\n\r\n        default:\r\n          break;\r\n      }*/\r\n      if (\r\n        drivingTrailerVel1 !== null &&\r\n        drivingTrailerVel1 !== undefined &&\r\n        drivingTrailerVel1.length !== 0\r\n      ) {\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed Driving Trailer B1\",\r\n            unit: drivingTrailerVel1.cfg.unt,\r\n            samptime: drivingTrailerVel1.rsi,\r\n          },\r\n          data: drivingTrailerVel1.dat,\r\n        });\r\n      }\r\n      if (\r\n        drivingTrailerVel1 !== null &&\r\n        drivingTrailerVel1 !== undefined &&\r\n        drivingTrailerVel1.length !== 0\r\n      ) {\r\n        chartValues.push({\r\n          config: {\r\n            label: \"Speed Driving Trailer B2\",\r\n            unit: drivingTrailerVel1.cfg.unt,\r\n            samptime: drivingTrailerVel1.rsi,\r\n          },\r\n          data: drivingTrailerVel1.dat,\r\n        });\r\n      }\r\n      console.log(\"Condition2 Selected- \", chartValues);\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\nconst filteredTimetrendSelector = () =>\r\n  createSelector(\r\n    timetrendSelector(),\r\n    selectedMainSignalSelector(),\r\n    filterSelector(),\r\n    (graphData, selectedMain, filter) => {\r\n      let chartValues = [];\r\n\r\n      //Bogie filter\r\n      if (filter.bogie === 1 || filter.bogie === 3) {\r\n        graphData &&\r\n          chartValues.push(\r\n            ...graphData.filter(\r\n              (item) => item.config.label === \"Speed Driving Trailer\" + \" B1\"\r\n            )\r\n          );\r\n      }\r\n\r\n      if (filter.bogie === 2 || filter.bogie === 3) {\r\n        graphData &&\r\n          chartValues.push(\r\n            ...graphData.filter(\r\n              (item) => item.config.label === \"Speed Driving Trailer\" + \" B2\"\r\n            )\r\n          );\r\n      }\r\n\r\n      chartValues = JSON.parse(JSON.stringify(chartValues));\r\n\r\n      //for (let j = 0; j < chartValues.length; j += 1) {\r\n      //for (let i = 0; i < chartValues[j].data.length; i += 1) {\r\n      chartValues.map((value, j) => {\r\n        chartValues[j].data.map((value, i) => {\r\n          //Operation filter\r\n          let flag = 0;\r\n          filter.operation.map((value, index) => {\r\n            if (chartValues[j].data[i].ftr.opm === value && flag === 0) {\r\n              flag = 1;\r\n            }\r\n          });\r\n          if (flag === 0) {\r\n            chartValues[j].data[i].min = null;\r\n            chartValues[j].data[i].max = null;\r\n            chartValues[j].data[i].avg = null;\r\n          }\r\n        });\r\n      });\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\nconst scatterplotSelector = () =>\r\n  createSelector(selectDetailViewCommonDetails(), (state) =>\r\n    state.get(\"scatterplotData\")\r\n  );\r\n\r\nconst loadingScatterSelector = () =>\r\n  createSelector(selectDetailViewCommonDetails(), (state) =>\r\n    state.get(\"loading\")\r\n  );\r\n\r\nconst loadingScatterB2Selector = () =>\r\n  createSelector(selectDetailViewCommonDetails(), (state) =>\r\n    state.get(\"loadingScatterB2\")\r\n  );\r\n//--------------------------\r\nconst scatterplot2Selector = () =>\r\n  createSelector(selectDetailViewCommonDetails(), (state) =>\r\n    state.get(\"scatterplotData2\")\r\n  );\r\n\r\nconst scatterplotBothBogieSelector = () =>\r\n  createSelector(\r\n    scatterplotSelector(),\r\n    scatterplot2Selector(),\r\n    (scatterplotData1, scatterplotData2) => {\r\n      let scatterData = [];\r\n      if (scatterplotData1 !== null && scatterplotData2 !== null) {\r\n        console.log(\"scatter data in selector\", scatterplotData1[0]);\r\n        scatterData.push(scatterplotData1[0]);\r\n        scatterData.push(scatterplotData2[0]);\r\n      }\r\n      return scatterData;\r\n    }\r\n  );\r\n\r\nconst filteredScatterSelector = () =>\r\n  createSelector(\r\n    scatterplotBothBogieSelector(),\r\n    filterSelector(),\r\n    (graphData, filter) => {\r\n      let chartValues = [],\r\n        bogie1,\r\n        bogie2;\r\n      if (\r\n        graphData.length !== 0 &&\r\n        graphData[0] !== undefined &&\r\n        graphData[1] !== undefined\r\n      ) {\r\n        let confg = graphData[0].cfg;\r\n        let docType = graphData[0].doc;\r\n        let resampleInterval = graphData[0].rsi;\r\n\r\n        bogie1 = graphData[0].dat.filter((item) => {\r\n          return filter.operation.includes(item.ftr.opm);\r\n        });\r\n        bogie1 = {\r\n          documentType: docType,\r\n          resampleInterval: resampleInterval,\r\n          config: confg,\r\n          data: bogie1,\r\n        };\r\n\r\n        let confg2 = graphData[1].cfg;\r\n        let docType2 = graphData[1].doc;\r\n        let resampleInterval2 = graphData[1].rsi;\r\n\r\n        bogie2 = graphData[1].dat.filter((item) => {\r\n          return filter.operation.includes(item.ftr.opm);\r\n        });\r\n        bogie2 = {\r\n          documentType: docType2,\r\n          resampleInterval: resampleInterval2,\r\n          config: confg2,\r\n          data: bogie2,\r\n        };\r\n\r\n        if (filter.bogie === 1) {\r\n          chartValues.push(bogie1);\r\n        } else if (filter.bogie === 2) {\r\n          chartValues.push(bogie2);\r\n        } else if (filter.bogie === 3) {\r\n          chartValues.push(bogie1);\r\n          chartValues.push(bogie2);\r\n        }\r\n      }\r\n\r\n      return chartValues;\r\n    }\r\n  );\r\n\r\nconst loadingSelector = () =>\r\n  createSelector(selectMapDetails(), (state) => state.get(\"loading\"));\r\n\r\nconst filterSelector = () =>\r\n  createSelector(selectDetailViewCommonDetails(), (state) =>\r\n    state.get(\"filter\")\r\n  );\r\n\r\nconst loadingHistogramSelector = () =>\r\n  createSelector(selectTrainViewCommonDetails(), (state) =>\r\n    state.get(\"loadingHistogram\")\r\n  );\r\n\r\nconst histogramSelector = () =>\r\n  createSelector(selectTrainViewCommonDetails(), (state) =>\r\n    state.get(\"histogramData\")\r\n  );\r\n\r\nexport {\r\n  loadingMapSelector,\r\n  loadingTimetrendSelector,\r\n  mapSlip1Selector,\r\n  mapSlip2Selector,\r\n  mapSpeed1Selector,\r\n  mapSpeed2Selector,\r\n  mapEffort1Selector,\r\n  mapEffort2Selector,\r\n  mapEffortDriving1Selector,\r\n  mapEffortDriving2Selector,\r\n  mapEffortBraking1Selector,\r\n  mapEffortBraking2Selector,\r\n  mapEffortBrakingMech1Selector,\r\n  mapEffortBrakingMech2Selector,\r\n  mapDrivingTrailerVel1Selector,\r\n  filteredMapSelector,\r\n  filteredMapSliderSelector,\r\n  timetrendSlip1Selector,\r\n  timetrendSlip2Selector,\r\n  timetrendSpeed1Selector,\r\n  timetrendSpeed2Selector,\r\n  timetrendEffort1Selector,\r\n  timetrendEffort2Selector,\r\n  timetrendEffortDriving1Selector,\r\n  timetrendEffortDriving2Selector,\r\n  timetrendEffortBraking1Selector,\r\n  timetrendEffortBraking2Selector,\r\n  timetrendEffortBrakingMech1Selector,\r\n  timetrendEffortBrakingMech2Selector,\r\n  ttDrivingTrailerVel1Selector,\r\n  loadingSelector,\r\n  filteredTimetrendSelector,\r\n  selectedTabSelector,\r\n  scatterplotSelector,\r\n  loadingScatterSelector,\r\n  filteredScatterSelector,\r\n  loadingScatterB2Selector,\r\n  loadingHistogramSelector,\r\n  histogramSelector,\r\n};\r\n","//Library\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { injectIntl, intlShape, FormattedMessage } from \"react-intl\";\r\nimport { createStructuredSelector } from \"reselect\";\r\nimport Moment from \"moment\";\r\n//Components\r\nimport \"./styles.scss\";\r\nimport messages from \"./messages\";\r\nimport SingleGraphPage from \"./SingleGraphPage\";\r\nimport Loading from \"../../components/Loading\";\r\nimport Breadcrumb from \"../../components/Breadcrumb\";\r\nimport Datepicker from \"../../components/DatePicker\";\r\nimport SideMenu from \"../../components/SideMenu\";\r\n//Actions\r\nimport {\r\n  getDetailViewMap,\r\n  getDetailViewTimetrend,\r\n  getDetailViewScatterplot,\r\n  setBasicFilter,\r\n  setAdvancedFilter,\r\n  setMainTrendSignal,\r\n  setMainScatterSignal,\r\n  addOverlay,\r\n  clearBasicFilter,\r\n  clearAdvancedFilter,\r\n  getDetailViewHistogram,\r\n  setTimetrendLoading,\r\n  clearDetailViewMap,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n  getDetailViewMapDateSlider,\r\n  clearDetailViewMapDateSlider,\r\n} from \"./actions\";\r\nimport {\r\n  setTab,\r\n  clearTrainViewMap,\r\n  clearTrainViewHistogram,\r\n} from \"../TrainViewPage/actions\";\r\nimport {\r\n  setSelectedTrain,\r\n  fetchTrainList,\r\n  setDate,\r\n} from \"../DashBoard/actions\";\r\n//Selectors\r\nimport {\r\n  loadingSelector,\r\n  loadingMapSelector,\r\n  loadingTimetrendSelector,\r\n  scatterplotSelector,\r\n  scatterplotBothBogieSelector,\r\n  filteredScatterSelector,\r\n  basicFilterSelector,\r\n  advancedFilterSelector,\r\n  selectedMainTrendSelector,\r\n  selectedOverlaysTrendSelector,\r\n  selectedMainScatterSelector,\r\n  filteredTimetrendSelector,\r\n  histogramSelector,\r\n  timetrendSlip1Selector,\r\n  timetrendSlip2Selector,\r\n  timetrendSpeed1Selector,\r\n  timetrendSpeed2Selector,\r\n  timetrendEffort1Selector,\r\n  timetrendEffort2Selector,\r\n  timetrendEffortDriving1Selector,\r\n  timetrendEffortDriving2Selector,\r\n  timetrendEffortBraking1Selector,\r\n  timetrendEffortBraking2Selector,\r\n  timetrendEffortBrakingMech1Selector,\r\n  timetrendEffortBrakingMech2Selector,\r\n  ttDrivingTrailerVel1Selector,\r\n  ttEffortReference1Selector,\r\n  ttEffortReference2Selector,\r\n  ttSlipPower1Selector,\r\n  ttSlipPower2Selector,\r\n  ttPowerBrakingMechanical1Selector,\r\n  ttPowerBrakingMechanical2Selector,\r\n  ttAirPressureBrakeCylinder1Selector,\r\n  ttAirPressureBrakeCylinder2Selector,\r\n  ttAmplitudeTorsionalOscillation1Selector,\r\n  ttAmplitudeTorsionalOscillation2Selector,\r\n  loadingScatterB2Selector,\r\n  mapSlip1Selector,\r\n  mapSlip2Selector,\r\n  mapSpeed1Selector,\r\n  mapSpeed2Selector,\r\n  mapEffort1Selector,\r\n  mapEffort2Selector,\r\n  mapEffortDriving1Selector,\r\n  mapEffortDriving2Selector,\r\n  mapEffortBraking1Selector,\r\n  mapEffortBraking2Selector,\r\n  mapEffortBrakingMech1Selector,\r\n  mapEffortBrakingMech2Selector,\r\n  mapDrivingTrailerVel1Selector,\r\n  mapEffortReference1Selector,\r\n  mapEffortReference2Selector,\r\n  mapSlipPower1Selector,\r\n  mapSlipPower2Selector,\r\n  mapPowerBrakingMechanical1Selector,\r\n  mapPowerBrakingMechanical2Selector,\r\n  mapAirPressureBrakeCylinder1Selector,\r\n  mapAirPressureBrakeCylinder2Selector,\r\n  mapAmplitudeTorsionalOscillation1Selector,\r\n  mapAmplitudeTorsionalOscillation2Selector,\r\n  filteredMapSelector,\r\n  mapTotalRunsSelector,\r\n} from \"./selectors\";\r\nimport { selectedTabSelector } from \"../TrainViewPage/selectors\";\r\nimport {\r\n  startDateSelector,\r\n  endDateSelector,\r\n  selectedTrainSelector,\r\n  fleetDataSelector,\r\n} from \"../DashBoard/selectors\";\r\nimport { overlaySignalOptions } from \"./SingleGraphPage/constants\";\r\n\r\nimport MomentLocalizer from \"react-widgets-moment\";\r\n\r\nMoment.locale(\"en\");\r\nMomentLocalizer();\r\n\r\nlet xAxisSignalScatter = \"Speed\";\r\nlet yAxisSignalScatter = \"Slip\";\r\nlet mapStartDate, mapEndDate, selectedDate;\r\nlet zoomHistory = [];\r\n\r\nfunction dateDiffInDays(a, b) {\r\n  const _MS_PER_DAY = 1000 * 60 * 60 * 24;\r\n  const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\r\n  const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\r\n  return Math.floor((utc2 - utc1) / _MS_PER_DAY);\r\n}\r\n\r\nclass DetailTrainView extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.props.selectedMainTrend == null &&\r\n      this.props.setMainTrendSignal(\"Speed Driving Trailer\");\r\n\r\n    this.props.setMainScatterSignal(\"Speed/Effort\");\r\n\r\n    this.props.basicFilter.operation == undefined &&\r\n      this.props.setBasicFilter({\r\n        weather: \"All\",\r\n        operation: [0, 1, 2, 3, 4, 5],\r\n        bogie: 1,\r\n      });\r\n\r\n    this.props.advancedFilter.temperature == undefined &&\r\n      this.props.setAdvancedFilter({\r\n        temperature: [1, 2, 3],\r\n        drivingtrailervelocity: 2,\r\n        sander: 2,\r\n        toprotection: 2,\r\n        // adhesioncontrol: 2,\r\n        // slingbrake: 2,\r\n        antislipbrake: 2,\r\n      });\r\n\r\n    this.state = {\r\n      xAxisSignal: \"Speed\",\r\n      yAxisSignal: \"Effort\",\r\n      zAxisSignal: \"Occurrence\",\r\n      scatterDropdownDefaultValue: \"Speed/Slip\",\r\n      isButtonDisabled: false,\r\n      isApplyZoomEnabled: false,\r\n      startZoomInterval: null,\r\n      endZoomInterval: null,\r\n      lockedZoomDuration: null,\r\n      scatterplotAvg: true,\r\n      loadingOverlay: false,\r\n      //scatterplotdata: this.props.scatterplotdata\r\n      //xAxisSignalScatter: \"Slip\",\r\n      // yAxisSignalScatter: \"Speed\"\r\n    };\r\n  }\r\n\r\n  componentDidMount() {\r\n    sessionStorage.removeItem(\"clickedTimeStamp\");\r\n    sessionStorage.removeItem(\"clickedSignal\");\r\n    sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n    let formatedStartDte = Moment(\r\n        new Date(this.props.startDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\"),\r\n      formatedEndDte = Moment(\r\n        new Date(this.props.endDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\");\r\n    this.setState({\r\n      startZoomInterval: formatedStartDte,\r\n      endZoomInterval: formatedEndDte,\r\n      lockedZoomDuration: this.getDifferenceText(\r\n        Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      ),\r\n    });\r\n\r\n    let currentSamplingType = this.getSamplingType(\r\n      Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n      Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n    );\r\n\r\n    sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n    sessionStorage.setItem(\"applyZoomInterval\", null);\r\n    sessionStorage.setItem(\"zoomIntervalStartDate\", null);\r\n    sessionStorage.setItem(\"zoomIntervalEndDate\", null);\r\n    sessionStorage.setItem(\"isTrendZoomed\", null);\r\n    this.props.setTimetrendLoading(true);\r\n    this.onClickTab(this.props.selectedTab);\r\n\r\n    if (this.props.trainList === null) {\r\n      this.props.fetchTrainList(startDate, endDate);\r\n    }\r\n\r\n    zoomHistory = [];\r\n    zoomHistory.push([startDate, endDate]);\r\n  }\r\n  componentWillUnmount() {\r\n    //this.onLoadMoreGraph();\r\n  }\r\n  handleScatterDropdownChange = (event) => {\r\n    let val;\r\n    if (event === \"Speed Driving Trailer / Slip\") val = \"Speed/Slip\";\r\n    if (event === \"Speed Driving Trailer / Effort\") val = \"Speed/Effort\";\r\n    if (event === \"Speed Driving Trailer / Effort Mech. Brake\")\r\n      val = \"Speed/EffortBrakingMechanical\";\r\n    if (event === \"Slip / Effort\") val = \"Slip/Effort\";\r\n    if (event === \"Speed Driving Trailer / Torsional Osc. Ampl.\")\r\n      val = \"Speed/AmplitudeTorsionalOscillation\";\r\n    if (event === \"Slip / Torsional Osc. Ampl.\")\r\n      val = \"Slip/AmplitudeTorsionalOscillation\";\r\n    if (event === \"Effort / Torsional Osc. Ampl.\")\r\n      val = \"Effort/AmplitudeTorsionalOscillation\";\r\n    if (event === \"Slip / Effort Mech. Brake\")\r\n      val = \"Slip/EffortBrakingMechanical\";\r\n    this.setState(\r\n      {\r\n        ...this.state,\r\n        [\"scatterDropdownDefaultValue\"]: val,\r\n      },\r\n      () => {\r\n        this.getSctterDataBasedonUserSelection();\r\n      }\r\n    );\r\n  };\r\n\r\n  getSctterDataBasedonUserSelection = () => {\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"applyZoomInterval\") === \"true\"\r\n    ) {\r\n      startDate = sessionStorage.getItem(\"zoomIntervalStartDate\");\r\n      endDate = sessionStorage.getItem(\"zoomIntervalEndDate\");\r\n    }\r\n\r\n    let scatterSeletedValue = this.state.scatterDropdownDefaultValue.split(\"/\");\r\n    xAxisSignalScatter = scatterSeletedValue[0];\r\n    yAxisSignalScatter = scatterSeletedValue[1];\r\n\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"1\",\r\n      this.state.scatterplotAvg\r\n    );\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"2\",\r\n      this.state.scatterplotAvg\r\n    );\r\n  };\r\n\r\n  handleScatterplotAvgMaxChange = (value) => {\r\n    let result = value === \"Maximum\" ? false : true;\r\n    this.setState({ scatterplotAvg: result }, () => {\r\n      this.getSctterDataBasedonUserSelection();\r\n    });\r\n  };\r\n\r\n  handleHistogramDropdownChange = (name) => (event) => {\r\n    this.setState({\r\n      ...this.state,\r\n      [name]: event,\r\n    });\r\n  };\r\n\r\n  getHistogramDataBasedonUserSelection = () => {\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"applyZoomInterval\") === \"true\"\r\n    ) {\r\n      startDate = sessionStorage.getItem(\"zoomIntervalStartDate\");\r\n      endDate = sessionStorage.getItem(\"zoomIntervalEndDate\");\r\n    }\r\n\r\n    this.props.getDetailViewHistogram(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      this.state.xAxisSignal,\r\n      this.state.yAxisSignal,\r\n      this.state.zAxisSignal,\r\n      [this.props.basicFilter, this.props.advancedFilter]\r\n    );\r\n  };\r\n  //  method for apply zoom interval starts here\r\n\r\n  applyZoomInterval = async () => {\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\"\r\n    ) {\r\n      sessionStorage.setItem(\"applyZoomInterval\", true);\r\n      this.setState({\r\n        isButtonDisabled: true,\r\n        isApplyZoomEnabled: true,\r\n      });\r\n      await this.props.clearDetailViewMap();\r\n      await this.props.clearDetailViewMapDateSlider();\r\n      await this.props.clearDetailViewScatterplot();\r\n      await this.props.clearDetailViewHistogram();\r\n    }\r\n  };\r\n\r\n  // method for apply zoom interval ends here\r\n\r\n  applyDateChange = async (start_Date, end_Date, trainSelect = true) => {\r\n    sessionStorage.removeItem(\"clickedTimeStamp\");\r\n    sessionStorage.removeItem(\"clickedSignal\");\r\n    sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    if (trainSelect)\r\n      if (\r\n        new Date(start_Date).valueOf() ==\r\n          new Date(this.props.startDate.replace(/%3A/g, \":\")).valueOf() &&\r\n        new Date(end_Date).valueOf() ==\r\n          new Date(this.props.endDate.replace(/%3A/g, \":\")).valueOf()\r\n      ) {\r\n        return false;\r\n      }\r\n    selectedDate = null;\r\n    await this.props.setDate(start_Date, end_Date);\r\n\r\n    await this.props.clearTrainViewMap();\r\n    await this.props.clearTrainViewHistogram();\r\n    await this.props.clearDetailViewMap();\r\n    await this.props.clearDetailViewMapDateSlider();\r\n    await this.props.clearDetailViewTimetrend();\r\n    await this.props.clearDetailViewScatterplot();\r\n    await this.props.clearDetailViewHistogram();\r\n    await this.props.addOverlay(null);\r\n    sessionStorage.setItem(\"samplingType\", null);\r\n    sessionStorage.setItem(\"applyZoomInterval\", null);\r\n    sessionStorage.setItem(\"zoomIntervalStartDate\", null);\r\n    sessionStorage.setItem(\"zoomIntervalEndDate\", null);\r\n    sessionStorage.setItem(\"isTrendZoomed\", null);\r\n    this.setState({\r\n      isButtonDisabled: false,\r\n      isApplyZoomEnabled: false,\r\n    });\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    let formatedStartDte = Moment(\r\n        new Date(this.props.startDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\"),\r\n      formatedEndDte = Moment(\r\n        new Date(this.props.endDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\");\r\n    this.setState({\r\n      startZoomInterval: formatedStartDte,\r\n      endZoomInterval: formatedEndDte,\r\n      lockedZoomDuration: this.getDifferenceText(\r\n        Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      ),\r\n    });\r\n    let currentSamplingType = this.getSamplingType(\r\n      Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n      Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n    );\r\n    sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n\r\n    this.props.fetchTrainList(startDate, endDate);\r\n\r\n    this.props.setTimetrendLoading(true);\r\n    this.onClickTab(this.props.selectedTab);\r\n    zoomHistory = [];\r\n    zoomHistory.push([startDate, endDate]);\r\n  };\r\n\r\n  onMapDateSelect = async (key) => {\r\n    if (\r\n      key !== null &&\r\n      key !==\r\n        Moment(sessionStorage.getItem(\"clickedTimeStamp\"), \"DD.MM.YYYY\").format(\r\n          \"DD-M-YYYY\"\r\n        )\r\n    ) {\r\n      sessionStorage.removeItem(\"clickedTimeStamp\");\r\n      sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n      sessionStorage.removeItem(\"clickedSignal\");\r\n    }\r\n    if (sessionStorage.getItem(\"clickedSignal\") !== null) {\r\n      this.props.setMainTrendSignal(\r\n        sessionStorage.getItem(\"clickedSignal\").trim()\r\n      );\r\n      this.props.addOverlay(null);\r\n    }\r\n    let startDate = this.props.startDate;\r\n    let endDate = this.props.endDate;\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"applyZoomInterval\") === \"true\" &&\r\n      sessionStorage.getItem(\"runClick\") !== \"true\"\r\n    ) {\r\n      startDate = sessionStorage.getItem(\"zoomIntervalStartDate\");\r\n      endDate = sessionStorage.getItem(\"zoomIntervalEndDate\");\r\n    }\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"applyZoomInterval\") === \"true\" &&\r\n      sessionStorage.getItem(\"runClick\") === \"true\"\r\n    ) {\r\n      if (sessionStorage.getItem(\"zoomIntervalPrevStartDate\") !== null) {\r\n        startDate = sessionStorage.getItem(\"zoomIntervalPrevStartDate\");\r\n        endDate = sessionStorage.getItem(\"zoomIntervalPrevEndDate\");\r\n      }\r\n      console.log(\r\n        \"zoomHistoryyPrev2\",\r\n        sessionStorage.getItem(\"zoomIntervalPrevStartDate\"),\r\n        sessionStorage.getItem(\"zoomIntervalPrevEndDate\")\r\n      );\r\n    }\r\n\r\n    let topdate = Moment(new Date(startDate.replace(/%3A/g, \":\"))).format(\r\n      \"DD-MM-YYYY\"\r\n    );\r\n    let enddate = Moment(new Date(endDate.replace(/%3A/g, \":\"))).format(\r\n      \"HH:mm:ss\"\r\n    );\r\n    if (enddate === \"00:00:00\") {\r\n      enddate = Moment(new Date(endDate.replace(/%3A/g, \":\")))\r\n        .subtract(1, \"days\")\r\n        .endOf(\"day\")\r\n        .format(\"DD-MM-YYYY\");\r\n    } else {\r\n      enddate = Moment(new Date(endDate.replace(/%3A/g, \":\"))).format(\r\n        \"DD-MM-YYYY\"\r\n      );\r\n    }\r\n\r\n    // let enddate = Moment(new Date(endDate.replace(/%3A/g, \":\"))).format(\r\n    //   \"DD-MM-YYYY\"\r\n    // );\r\n    const totalDays =\r\n      dateDiffInDays(\r\n        new Date(startDate.replace(/%3A/g, \":\")),\r\n        new Date(endDate.replace(/%3A/g, \":\"))\r\n      ) + 1;\r\n    selectedDate =\r\n      key !== null ? key : selectedDate != null ? selectedDate : null;\r\n    let arr =\r\n      selectedDate != null ? selectedDate.split(\"-\") : enddate.split(\"-\");\r\n    let mapStartDatePrev = mapStartDate,\r\n      mapEndDatePrev = mapEndDate;\r\n    let currMonth = arr[1].length === 1 ? \"0\" + arr[1] : arr[1];\r\n    let currDate = arr[0].length === 1 ? \"0\" + arr[0] : arr[0];\r\n    let currentDate = currDate + \"-\" + currMonth + \"-\" + arr[2];\r\n\r\n    if (sessionStorage.getItem(\"clickedTimeStamp\") !== null) {\r\n      mapStartDate = startDate;\r\n      mapEndDate = endDate;\r\n    } else if (totalDays === 1) {\r\n      mapStartDate = startDate;\r\n      mapEndDate = endDate;\r\n    } else {\r\n      if (topdate === currentDate) {\r\n        mapStartDate = startDate;\r\n        mapEndDate = arr[2] + \"-\" + arr[1] + \"-\" + arr[0] + \"T23%3A59%3A59\";\r\n      } else if (enddate === currentDate) {\r\n        mapStartDate = arr[2] + \"-\" + arr[1] + \"-\" + arr[0] + \"T00%3A00%3A00\";\r\n        mapEndDate = endDate;\r\n      } else {\r\n        mapStartDate = arr[2] + \"-\" + arr[1] + \"-\" + arr[0] + \"T00%3A00%3A00\";\r\n        mapEndDate = arr[2] + \"-\" + arr[1] + \"-\" + arr[0] + \"T23%3A59%3A59\";\r\n      }\r\n    }\r\n\r\n    if (\r\n      mapStartDate != mapStartDatePrev ||\r\n      mapEndDate != mapEndDatePrev ||\r\n      sessionStorage.getItem(\"clickedTimeStamp\") !== null\r\n    ) {\r\n      await this.props.clearDetailViewMap();\r\n      //await this.props.clearDetailViewMapDateSlider();\r\n    }\r\n\r\n    /*if (this.props.mapTotalRuns === null) {\r\n      this.props.getDetailViewMapDateSlider(\r\n        this.props.selectedTrain,\r\n        startDate,\r\n        endDate\r\n      );\r\n    }*/\r\n\r\n    switch (this.props.selectedMainTrend) {\r\n      case \"Slip\":\r\n        this.props.mapSlip1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Slip\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSlip2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Slip\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Speed at Wheel\":\r\n        this.props.mapSpeed1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Speed\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSpeed2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Speed\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Effort\":\r\n        this.props.mapEffort1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Effort\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffort2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"Effort\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      /*case \"EffortDriving\":\r\n        this.props.mapEffortDriving1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortDriving\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortDriving2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortDriving\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortBraking\":\r\n        this.props.mapEffortBraking1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortBraking\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBraking2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortBraking\",\r\n            \"2\"\r\n          );\r\n        break;*/\r\n\r\n      case \"Effort Mech. Brake\":\r\n        this.props.mapEffortBrakingMech1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBrakingMech2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Speed Driving Trailer\":\r\n        this.props.mapDrivingTrailerVel1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"DrivingTrailerVel\",\r\n            \"1\"\r\n          );\r\n        break;\r\n\r\n      case \"Effort Reference\":\r\n        this.props.mapEffortReference1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortReference\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortReference2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"EffortReference\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Power Slip\":\r\n        this.props.mapSlipPower1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"SlipPower\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSlipPower2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"SlipPower\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Power Mechanical Brake\":\r\n        this.props.mapPowerBrakingMechanical1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"PowerBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.mapPowerBrakingMechanical2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"PowerBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Pressure Brake Cyl.\":\r\n        this.props.mapAirPressureBrakeCylinder1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"AirPressureBrakeCylinder\",\r\n            \"1\"\r\n          );\r\n        this.props.mapAirPressureBrakeCylinder2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"AirPressureBrakeCylinder\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Torsional Osc. Ampl.\":\r\n        this.props.mapAmplitudeTorsionalOscillation1 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"AmplitudeTorsionalOscillation\",\r\n            \"1\"\r\n          );\r\n        this.props.mapAmplitudeTorsionalOscillation2 === null &&\r\n          this.props.getDetailViewMap(\r\n            this.props.selectedTrain,\r\n            mapStartDate,\r\n            mapEndDate,\r\n            \"AmplitudeTorsionalOscillation\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n  };\r\n\r\n  clearBasicFilter = () => {\r\n    this.props.clearBasicFilter();\r\n  };\r\n\r\n  clearAdvancedFilter = () => {\r\n    this.props.clearAdvancedFilter();\r\n  };\r\n\r\n  onTrainSelect = async (e) => {\r\n    await this.props.setSelectedTrain(e.target.id);\r\n    let startDate = new Date(this.props.startDate.replace(/%3A/g, \":\")),\r\n      endDate = new Date(this.props.endDate.replace(/%3A/g, \":\"));\r\n    this.applyDateChange(startDate, endDate, false);\r\n  };\r\n\r\n  changeBasicFilter = (e) => {\r\n    let currentTargetValue = Number(e.currentTarget.value);\r\n    if (isNaN(currentTargetValue)) currentTargetValue = e.currentTarget.value;\r\n\r\n    if (e.target.type !== \"checkbox\") {\r\n      this.props.setBasicFilter({\r\n        ...this.props.basicFilter,\r\n        [e.target.name]: currentTargetValue,\r\n      });\r\n    } else if (e.target.type === \"checkbox\") {\r\n      if (e.target.name === \"operation\") {\r\n        if (e.currentTarget.checked) {\r\n          let operationValue = [currentTargetValue];\r\n\r\n          this.props.basicFilter.operation != null &&\r\n            operationValue.push(...this.props.basicFilter.operation);\r\n\r\n          this.props.setBasicFilter({\r\n            ...this.props.basicFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        } else if (!e.currentTarget.checked) {\r\n          let operationValue = [];\r\n\r\n          this.props.basicFilter.operation != null &&\r\n            (operationValue = this.props.basicFilter.operation);\r\n\r\n          var index = operationValue.indexOf(currentTargetValue);\r\n          index > -1 && operationValue.splice(index, 1);\r\n\r\n          this.props.setBasicFilter({\r\n            ...this.props.basicFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  changeAdvancedFilter = (e) => {\r\n    let currentTargetValue = Number(e.currentTarget.value);\r\n    if (isNaN(currentTargetValue)) currentTargetValue = e.currentTarget.value;\r\n\r\n    if (e.target.type !== \"checkbox\") {\r\n      this.props.setAdvancedFilter({\r\n        ...this.props.advancedFilter,\r\n        [e.target.name]: currentTargetValue,\r\n      });\r\n    } else if (e.target.type === \"checkbox\") {\r\n      if (e.target.name === \"temperature\") {\r\n        if (e.currentTarget.checked) {\r\n          let operationValue = [currentTargetValue];\r\n\r\n          this.props.advancedFilter.temperature != null &&\r\n            operationValue.push(...this.props.advancedFilter.temperature);\r\n\r\n          this.props.setAdvancedFilter({\r\n            ...this.props.advancedFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        } else if (!e.currentTarget.checked) {\r\n          let operationValue = [];\r\n\r\n          this.props.advancedFilter.temperature != null &&\r\n            (operationValue = this.props.advancedFilter.temperature);\r\n\r\n          var index = operationValue.indexOf(currentTargetValue);\r\n          index > -1 && operationValue.splice(index, 1);\r\n\r\n          this.props.setAdvancedFilter({\r\n            ...this.props.advancedFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  clickMainSignalTrend = (selectedMainOption) => {\r\n    sessionStorage.removeItem(\"clickedSignal\");\r\n    this.props.setMainTrendSignal(selectedMainOption);\r\n    this.props.addOverlay([]);\r\n  };\r\n\r\n  clickOverlaySignalTrend = (selectedOverlaysTrend) => {\r\n    this.props.addOverlay(selectedOverlaysTrend);\r\n    //console.log(`Overlay selected:`, selectedOverlays);\r\n  };\r\n\r\n  clickMainSignalScatter = (selectedMainOption) => {\r\n    this.props.setMainScatterSignal(selectedMainOption);\r\n  };\r\n\r\n  onClickTab = async (tab) => {\r\n    if (tab !== \"MAP_TYPE\") {\r\n      sessionStorage.removeItem(\"clickedTimeStamp\");\r\n      sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n      sessionStorage.removeItem(\"clickedSignal\");\r\n    }\r\n    selectedDate = null;\r\n    this.props.setTab(tab);\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n    if (\r\n      sessionStorage.getItem(\"zoomIntervalStartDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"zoomIntervalEndDate\") !== \"null\" &&\r\n      sessionStorage.getItem(\"applyZoomInterval\") === \"true\"\r\n    ) {\r\n      startDate = sessionStorage.getItem(\"zoomIntervalStartDate\");\r\n      endDate = sessionStorage.getItem(\"zoomIntervalEndDate\");\r\n    }\r\n\r\n    if (tab === \"TREND_TYPE\") {\r\n      this.getTimetrendData(this.props.selectedMainTrend, startDate, endDate);\r\n    } else if (tab === \"SCATTER_TYPE\") {\r\n      let scatterSeletedValue = this.state.scatterDropdownDefaultValue.split(\r\n        \"/\"\r\n      );\r\n      xAxisSignalScatter = scatterSeletedValue[0];\r\n      yAxisSignalScatter = scatterSeletedValue[1];\r\n      if (this.props.scatterplotBothBogieData.length === 0) {\r\n        this.props.getDetailViewScatterplot(\r\n          this.props.selectedTrain,\r\n          startDate,\r\n          endDate,\r\n          xAxisSignalScatter,\r\n          yAxisSignalScatter,\r\n          \"1\",\r\n          this.state.scatterplotAvg\r\n        );\r\n        this.props.getDetailViewScatterplot(\r\n          this.props.selectedTrain,\r\n          startDate,\r\n          endDate,\r\n          xAxisSignalScatter,\r\n          yAxisSignalScatter,\r\n          \"2\",\r\n          this.state.scatterplotAvg\r\n        );\r\n      }\r\n    } else if (tab === \"HISTOGRAM_TYPE\") {\r\n      if (this.props.histogramdata === null) {\r\n        this.props.getDetailViewHistogram(\r\n          this.props.selectedTrain,\r\n          startDate,\r\n          endDate,\r\n          this.state.xAxisSignal,\r\n          this.state.yAxisSignal,\r\n          this.state.zAxisSignal,\r\n          [this.props.basicFilter, this.props.advancedFilter]\r\n        );\r\n      }\r\n    } else if (tab === \"MAP_TYPE\") {\r\n      if (sessionStorage.getItem(\"runClick\") === \"true\") {\r\n        await this.props.clearDetailViewMapDateSlider();\r\n        sessionStorage.setItem(\"runClick\", false);\r\n      }\r\n      if (this.props.mapTotalRuns === null) {\r\n        this.props.getDetailViewMapDateSlider(\r\n          this.props.selectedTrain,\r\n          startDate,\r\n          endDate\r\n        );\r\n      }\r\n      this.onMapDateSelect(null);\r\n    }\r\n    this.handleLoading();\r\n  };\r\n\r\n  componentWillReceiveProps(nextProps) {\r\n    if (this.props.timetrenddata !== nextProps.timetrenddata) {\r\n      let count = 0;\r\n      let bogie = this.props.basicFilter.bogie;\r\n      let allSignals = [],\r\n        selectedSignalsLength;\r\n      allSignals.push(this.props.selectedMainTrend);\r\n      if (this.props.selectedOverlaysTrend != null)\r\n        allSignals = allSignals.concat(this.props.selectedOverlaysTrend);\r\n\r\n      allSignals.map((signal) => {\r\n        switch (signal) {\r\n          case \"Slip\":\r\n            if (bogie === 1) {\r\n              this.props.timetrendSlip1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.timetrendSlip2 !== null && count++;\r\n            } else {\r\n              this.props.timetrendSlip1 !== null &&\r\n                this.props.timetrendSlip2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Speed at Wheel\":\r\n            if (bogie === 1) {\r\n              this.props.timetrendSpeed1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.timetrendSpeed2 !== null && count++;\r\n            } else {\r\n              this.props.timetrendSpeed1 !== null &&\r\n                this.props.timetrendSpeed2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Effort\":\r\n            if (bogie === 1) {\r\n              this.props.timetrendEffort1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.timetrendEffort2 !== null && count++;\r\n            } else {\r\n              this.props.timetrendEffort1 !== null &&\r\n                this.props.timetrendEffort2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Effort Mech. Brake\":\r\n            if (bogie === 1) {\r\n              this.props.timetrendEffortBrakingMech1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.timetrendEffortBrakingMech2 !== null && count++;\r\n            } else {\r\n              this.props.timetrendEffortBrakingMech1 !== null &&\r\n                this.props.timetrendEffortBrakingMech2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Speed Driving Trailer\":\r\n            this.props.ttDrivingTrailerVel1 !== null && count++;\r\n            break;\r\n          case \"Effort Reference\":\r\n            if (bogie === 1) {\r\n              this.props.ttEffortReference1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.ttEffortReference2 !== null && count++;\r\n            } else {\r\n              this.props.ttEffortReference1 !== null &&\r\n                this.props.ttEffortReference2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Power Slip\":\r\n            if (bogie === 1) {\r\n              this.props.ttSlipPower1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.ttSlipPower2 !== null && count++;\r\n            } else {\r\n              this.props.ttSlipPower1 !== null &&\r\n                this.props.ttSlipPower2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Power Mechanical Brake\":\r\n            if (bogie === 1) {\r\n              this.props.ttPowerBrakingMechanical1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.ttPowerBrakingMechanical2 !== null && count++;\r\n            } else {\r\n              this.props.ttPowerBrakingMechanical1 !== null &&\r\n                this.props.ttPowerBrakingMechanical2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Pressure Brake Cyl.\":\r\n            if (bogie === 1) {\r\n              this.props.ttAirPressureBrakeCylinder1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.ttAirPressureBrakeCylinder2 !== null && count++;\r\n            } else {\r\n              this.props.ttAirPressureBrakeCylinder1 !== null &&\r\n                this.props.ttAirPressureBrakeCylinder2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          case \"Torsional Osc. Ampl.\":\r\n            if (bogie === 1) {\r\n              this.props.ttAmplitudeTorsionalOscillation1 !== null && count++;\r\n            } else if (bogie === 2) {\r\n              this.props.ttAmplitudeTorsionalOscillation2 !== null && count++;\r\n            } else {\r\n              this.props.ttAmplitudeTorsionalOscillation1 !== null &&\r\n                this.props.ttAmplitudeTorsionalOscillation2 !== null &&\r\n                count++;\r\n            }\r\n            break;\r\n          default:\r\n            break;\r\n        }\r\n      });\r\n      selectedSignalsLength = allSignals.length;\r\n      if (count === selectedSignalsLength) {\r\n        //this.props.setTimetrendLoading(false);\r\n        this.setState({ loadingOverlay: false });\r\n      }\r\n    }\r\n  }\r\n\r\n  handleLoading = () => {\r\n    let bogie = this.props.basicFilter.bogie;\r\n    switch (this.props.selectedMainTrend) {\r\n      case \"Slip\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendSlip1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendSlip2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendSlip1 !== null &&\r\n            this.props.timetrendSlip2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n        break;\r\n      case \"Speed at Wheel\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendSpeed1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendSpeed2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendSpeed1 !== null &&\r\n            this.props.timetrendSpeed2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"Effort\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendEffort1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendEffort2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendEffort1 !== null &&\r\n            this.props.timetrendEffort2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      /*case \"EffortDriving\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendEffortDriving1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendEffortDriving2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendEffortDriving1 !== null &&\r\n            this.props.timetrendEffortDriving2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"EffortBraking\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendEffortBraking1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendEffortBraking2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendEffortBraking1 !== null &&\r\n            this.props.timetrendEffortBraking2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;*/\r\n      case \"Effort Mech. Brake\":\r\n        if (bogie === 1) {\r\n          this.props.timetrendEffortBrakingMech1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.timetrendEffortBrakingMech2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.timetrendEffortBrakingMech1 !== null &&\r\n            this.props.timetrendEffortBrakingMech2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n\r\n      case \"Speed Driving Trailer\":\r\n        this.props.ttDrivingTrailerVel1 !== null &&\r\n          this.props.setTimetrendLoading(false);\r\n\r\n        break;\r\n      case \"Effort Reference\":\r\n        if (bogie === 1) {\r\n          this.props.ttEffortReference1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.ttEffortReference2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.ttEffortReference1 !== null &&\r\n            this.props.ttEffortReference2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"Power Slip\":\r\n        if (bogie === 1) {\r\n          this.props.ttSlipPower1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.ttSlipPower2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.ttSlipPower1 !== null &&\r\n            this.props.ttSlipPower2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"Power Mechanical Brake\":\r\n        if (bogie === 1) {\r\n          this.props.ttPowerBrakingMechanical1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.ttPowerBrakingMechanical2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.ttPowerBrakingMechanical1 !== null &&\r\n            this.props.ttPowerBrakingMechanical2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"Pressure Brake Cyl.\":\r\n        if (bogie === 1) {\r\n          this.props.ttAirPressureBrakeCylinder1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.ttAirPressureBrakeCylinder2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.ttAirPressureBrakeCylinder1 !== null &&\r\n            this.props.ttAirPressureBrakeCylinder2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n      case \"Torsional Osc. Ampl.\":\r\n        if (bogie === 1) {\r\n          this.props.ttAmplitudeTorsionalOscillation1 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else if (bogie === 2) {\r\n          this.props.ttAmplitudeTorsionalOscillation2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        } else {\r\n          this.props.ttAmplitudeTorsionalOscillation1 !== null &&\r\n            this.props.ttAmplitudeTorsionalOscillation2 !== null &&\r\n            this.props.setTimetrendLoading(false);\r\n        }\r\n\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n  };\r\n\r\n  //------------------------------------------------date diff\r\n  getDateDiff = (StartDate, EndDate) => {\r\n    if (StartDate && EndDate) {\r\n      let duration = Moment.duration(Moment(EndDate).diff(Moment(StartDate)));\r\n      let totaldays = duration.asDays();\r\n      let TotalHours = duration.asHours();\r\n      return { totaldays, TotalHours };\r\n    }\r\n\r\n    return \"\";\r\n  };\r\n\r\n  getSamplingType = (startDate, endDate) => {\r\n    let { totaldays, TotalHours } = this.getDateDiff(startDate, endDate);\r\n    let samplingType = \"\";\r\n    // let totaldays = 0;\r\n    // let TotalHours = 22;\r\n    if (totaldays > 60 && totaldays <= 90) {\r\n      samplingType = \"30 minute\";\r\n    } else if (totaldays > 20 && totaldays <= 60) {\r\n      samplingType = \"15 minute\";\r\n    } else if (totaldays > 5 && totaldays <= 20) {\r\n      samplingType = \"4 minute\";\r\n    } else if (totaldays > 1 && totaldays <= 5) {\r\n      samplingType = \"1 minute\";\r\n    } else if (totaldays <= 1) {\r\n      if (TotalHours > 4) {\r\n        samplingType = \"15 second\";\r\n      } else if (TotalHours > 1 && TotalHours <= 4) {\r\n        samplingType = \"4 second\";\r\n      } else {\r\n        samplingType = \"1 second\";\r\n      }\r\n    }\r\n\r\n    console.log(\"dateDiffNewChanged\", samplingType, totaldays, TotalHours);\r\n    return samplingType;\r\n  };\r\n\r\n  getDifferenceText = (StartDate, EndDate) => {\r\n    if (StartDate && EndDate) {\r\n      const localStartDate = StartDate;\r\n      const localEndDate = EndDate;\r\n      const diff = Moment(localEndDate).diff(Moment(localStartDate));\r\n      const d = Moment.duration(diff);\r\n\r\n      const days = Math.floor(d.asHours() / 24);\r\n      const hours = Math.floor(d.asHours() - days * 24);\r\n      const minutes = Math.floor(d.asMinutes() - (hours * 60 + days * 24 * 60));\r\n      let msg = days > 0 ? ` ${days} days` : \"\";\r\n      msg += hours > 0 || minutes > 0 ? ` ${hours} hours` : \"\";\r\n      msg += minutes > 0 ? ` ${minutes} minutes` : \"\";\r\n\r\n      if (days < 0 || hours < 0 || minutes < 0) {\r\n        msg = \"\";\r\n      }\r\n      return msg;\r\n    }\r\n\r\n    return \"\";\r\n  };\r\n\r\n  //-------------------------------------------------\r\n  onLoadMoreGraph = async (start, end, iszoom, iszoomout) => {\r\n    sessionStorage.removeItem(\"clickedTimeStampForRunSlider\");\r\n    let formatedStartDate, formatedEndDate;\r\n    if (iszoom === true) {\r\n      let currentSamplingType = this.getSamplingType(\r\n        Moment.utc(start[0], \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(end[0], \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      );\r\n\r\n      let previousSamplingType =\r\n        sessionStorage.getItem(\"samplingType\") === null\r\n          ? null\r\n          : sessionStorage.getItem(\"samplingType\");\r\n      console.log(\"issame\", currentSamplingType, previousSamplingType);\r\n      //----------------------------------------------------\r\n      if (\r\n        previousSamplingType !== null &&\r\n        currentSamplingType === previousSamplingType\r\n      ) {\r\n        return false;\r\n      }\r\n      //if (sessionStorage.getItem(\"applyZoomInterval\") === \"true\")\r\n      {\r\n        await this.props.clearDetailViewMap();\r\n        await this.props.clearDetailViewMapDateSlider();\r\n        await this.props.clearDetailViewScatterplot();\r\n        await this.props.clearDetailViewHistogram();\r\n      }\r\n      await this.props.clearDetailViewTimetrend();\r\n      // await this.props.addOverlay(null);\r\n      formatedStartDate = Moment.utc(start[0], \"DD.MM.YYYY HH:mm:ss\")\r\n        .toISOString()\r\n        .slice(0, 19)\r\n        .replace(/:/g, \"%3A\");\r\n      formatedEndDate = Moment.utc(end[0], \"DD.MM.YYYY HH:mm:ss\")\r\n        .toISOString()\r\n        .slice(0, 19)\r\n        .replace(/:/g, \"%3A\");\r\n      sessionStorage.setItem(\"zoomIntervalStartDate\", formatedStartDate);\r\n      sessionStorage.setItem(\"zoomIntervalEndDate\", formatedEndDate);\r\n      sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n      sessionStorage.setItem(\"isTrendZoomed\", true);\r\n      sessionStorage.setItem(\"applyZoomInterval\", true);\r\n      console.log(\"onzoomdate\", start, end, formatedStartDate, formatedEndDate);\r\n      this.setState({\r\n        startZoomInterval: Moment.utc(start[0], \"DD.MM.YYYY HH:mm:ss\").format(\r\n          \"DD.MM.YYYY, HH:mm\"\r\n        ),\r\n        endZoomInterval: Moment.utc(end[0], \"DD.MM.YYYY HH:mm:ss\").format(\r\n          \"DD.MM.YYYY, HH:mm\"\r\n        ),\r\n        lockedZoomDuration: this.getDifferenceText(\r\n          Moment.utc(start[0], \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n          Moment.utc(end[0], \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n        ),\r\n      });\r\n      zoomHistory.push([formatedStartDate, formatedEndDate]);\r\n      //console.log(\"zoomHistory\", zoomHistory);\r\n    } else if (iszoomout === true) {\r\n      if (zoomHistory.length > 1) {\r\n        let backDate = zoomHistory[zoomHistory.length - 2];\r\n        zoomHistory.pop();\r\n        formatedStartDate = backDate[0];\r\n        formatedEndDate = backDate[1];\r\n        //console.log(\"zoomHistoryy\", formatedStartDate, formatedEndDate);\r\n      } else {\r\n        //zoomHistory = [];\r\n        // formatedStartDate = this.props.startDate;\r\n        // formatedEndDate = this.props.endDate;\r\n        return false;\r\n      }\r\n\r\n      let formatedStartDte = Moment(\r\n          new Date(formatedStartDate.replace(/%3A/g, \":\"))\r\n        ).format(\"DD.MM.YYYY, HH:mm\"),\r\n        formatedEndDte = Moment(\r\n          new Date(formatedEndDate.replace(/%3A/g, \":\"))\r\n        ).format(\"DD.MM.YYYY, HH:mm\");\r\n      this.setState({\r\n        startZoomInterval: formatedStartDte,\r\n        endZoomInterval: formatedEndDte,\r\n        lockedZoomDuration: this.getDifferenceText(\r\n          Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n          Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n        ),\r\n      });\r\n      let currentSamplingType = this.getSamplingType(\r\n        Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      );\r\n\r\n      //await this.props.clearTrainViewMap();\r\n      await this.props.clearDetailViewMap();\r\n      await this.props.clearDetailViewMapDateSlider();\r\n      await this.props.clearDetailViewTimetrend();\r\n      await this.props.clearDetailViewScatterplot();\r\n      await this.props.clearDetailViewHistogram();\r\n      // await this.props.addOverlay(null);\r\n      sessionStorage.setItem(\"zoomIntervalStartDate\", formatedStartDate);\r\n      sessionStorage.setItem(\"zoomIntervalEndDate\", formatedEndDate);\r\n      sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n      sessionStorage.setItem(\"isTrendZoomed\", true);\r\n      sessionStorage.setItem(\"applyZoomInterval\", true);\r\n    } else {\r\n      zoomHistory = [];\r\n      zoomHistory.push([this.props.startDate, this.props.endDate]);\r\n      //await this.props.clearTrainViewMap();\r\n      await this.props.clearDetailViewMap();\r\n      await this.props.clearDetailViewMapDateSlider();\r\n      await this.props.clearDetailViewTimetrend();\r\n      await this.props.clearDetailViewScatterplot();\r\n      await this.props.clearDetailViewHistogram();\r\n      // await this.props.addOverlay(null);\r\n      formatedStartDate = this.props.startDate;\r\n      formatedEndDate = this.props.endDate;\r\n      sessionStorage.setItem(\"samplingType\", null);\r\n      sessionStorage.setItem(\"applyZoomInterval\", null);\r\n      sessionStorage.setItem(\"zoomIntervalStartDate\", null);\r\n      sessionStorage.setItem(\"zoomIntervalEndDate\", null);\r\n      sessionStorage.setItem(\"isTrendZoomed\", null);\r\n      //this.onClickTab(this.props.selectedTab);\r\n\r\n      let formatedStartDte = Moment(\r\n          new Date(this.props.startDate.replace(/%3A/g, \":\"))\r\n        ).format(\"DD.MM.YYYY, HH:mm\"),\r\n        formatedEndDte = Moment(\r\n          new Date(this.props.endDate.replace(/%3A/g, \":\"))\r\n        ).format(\"DD.MM.YYYY, HH:mm\");\r\n      this.setState({\r\n        startZoomInterval: formatedStartDte,\r\n        endZoomInterval: formatedEndDte,\r\n        lockedZoomDuration: this.getDifferenceText(\r\n          Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n          Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n        ),\r\n      });\r\n      let currentSamplingType = this.getSamplingType(\r\n        Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      );\r\n      sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n      //this.props.setTimetrendLoading(true);\r\n      this.setState({ loadingOverlay: true });\r\n      this.onClickTab(this.props.selectedTab);\r\n      return;\r\n    }\r\n    this.setState({\r\n      isButtonDisabled: false,\r\n      isApplyZoomEnabled: false,\r\n    });\r\n    this.setState({ loadingOverlay: true });\r\n    this.getTimetrendData(\r\n      this.props.selectedMainTrend,\r\n      formatedStartDate,\r\n      formatedEndDate\r\n    );\r\n    /*this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Slip\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Slip\",\r\n      \"2\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Speed\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Speed\",\r\n      \"2\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Effort\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"Effort\",\r\n      \"2\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortDriving\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortDriving\",\r\n      \"2\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortBraking\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortBraking\",\r\n      \"2\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortBrakingMechanical\",\r\n      \"1\"\r\n    );\r\n\r\n    this.props.getDetailViewTimetrend(\r\n      this.props.selectedTrain,\r\n      formatedStartDate,\r\n      formatedEndDate,\r\n      \"EffortBrakingMechanical\",\r\n      \"2\"\r\n    );*/\r\n  };\r\n\r\n  //timetrend functions-start(this functions call the api's. In that selected signal api will be called first)\r\n  getTimetrendData = (selectedSignal, startDate, endDate) => {\r\n    let allSignals = [];\r\n    allSignals.push(selectedSignal);\r\n    if (this.props.selectedOverlaysTrend != null)\r\n      allSignals = allSignals.concat(this.props.selectedOverlaysTrend);\r\n    let filterSignals = overlaySignalOptions.filter(\r\n      (item) => !allSignals.includes(item)\r\n    );\r\n    allSignals = allSignals.concat(filterSignals);\r\n\r\n    let bogie = [];\r\n    if (this.props.basicFilter.bogie === 1) {\r\n      bogie.push(1);\r\n      bogie.push(2);\r\n    } else if (this.props.basicFilter.bogie === 2) {\r\n      bogie.push(2);\r\n      bogie.push(1);\r\n    } else bogie.push(3);\r\n\r\n    bogie.map((bg) => {\r\n      allSignals.map((signal) => {\r\n        switch (signal) {\r\n          case \"Slip\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.timetrendSlip1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Slip\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.timetrendSlip2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Slip\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Speed at Wheel\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.timetrendSpeed1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Speed\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.timetrendSpeed2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Speed\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Effort\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.timetrendEffort1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Effort\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.timetrendEffort2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"Effort\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Effort Mech. Brake\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.timetrendEffortBrakingMech1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"EffortBrakingMechanical\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.timetrendEffortBrakingMech2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"EffortBrakingMechanical\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Speed Driving Trailer\":\r\n            if (bg === 1 || bg === 2 || bg === 3)\r\n              this.props.ttDrivingTrailerVel1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"DrivingTrailerVel\",\r\n                  \"1\"\r\n                );\r\n            break;\r\n          case \"Effort Reference\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.ttEffortReference1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"EffortReference\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.ttEffortReference2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"EffortReference\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Power Slip\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.ttSlipPower1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"SlipPower\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.ttSlipPower2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"SlipPower\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Power Mechanical Brake\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.ttPowerBrakingMechanical1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"PowerBrakingMechanical\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.ttPowerBrakingMechanical2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"PowerBrakingMechanical\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Pressure Brake Cyl.\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.ttAirPressureBrakeCylinder1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"AirPressureBrakeCylinder\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.ttAirPressureBrakeCylinder2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"AirPressureBrakeCylinder\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          case \"Torsional Osc. Ampl.\":\r\n            if (bg === 1 || bg === 3)\r\n              this.props.ttAmplitudeTorsionalOscillation1 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"AmplitudeTorsionalOscillation\",\r\n                  \"1\"\r\n                );\r\n            if (bg === 2 || bg === 3)\r\n              this.props.ttAmplitudeTorsionalOscillation2 === null &&\r\n                this.props.getDetailViewTimetrend(\r\n                  this.props.selectedTrain,\r\n                  startDate,\r\n                  endDate,\r\n                  \"AmplitudeTorsionalOscillation\",\r\n                  \"2\"\r\n                );\r\n            break;\r\n          default:\r\n            break;\r\n        }\r\n      });\r\n    });\r\n  };\r\n  //timetrend functions-end\r\n\r\n  setZoomIntervalByRunSelection = async (startDate, endDate) => {\r\n    sessionStorage.setItem(\"isTrendZoomed\", true);\r\n    console.log(\"start1 \", startDate, endDate);\r\n    let formatedPrevStartDate, formatedPrevEndDate;\r\n    if (sessionStorage.getItem(\"runClick\") !== \"true\")\r\n      if (zoomHistory.length > 1) {\r\n        let backDate = zoomHistory[zoomHistory.length - 1];\r\n        formatedPrevStartDate = backDate[0];\r\n        formatedPrevEndDate = backDate[1];\r\n        sessionStorage.setItem(\r\n          \"zoomIntervalPrevStartDate\",\r\n          formatedPrevStartDate\r\n        );\r\n        sessionStorage.setItem(\"zoomIntervalPrevEndDate\", formatedPrevEndDate);\r\n        console.log(\r\n          \"zoomHistoryyPrev\",\r\n          formatedPrevStartDate,\r\n          formatedPrevEndDate\r\n        );\r\n      }\r\n    zoomHistory = [];\r\n    zoomHistory.push([this.props.startDate, this.props.endDate]);\r\n    zoomHistory.push([startDate, endDate]);\r\n    let formatedStartDate = startDate;\r\n    let formatedEndDate = endDate;\r\n    let formatedStartDte = Moment(\r\n        new Date(formatedStartDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\"),\r\n      formatedEndDte = Moment(\r\n        new Date(formatedEndDate.replace(/%3A/g, \":\"))\r\n      ).format(\"DD.MM.YYYY, HH:mm\");\r\n    this.setState({\r\n      startZoomInterval: formatedStartDte,\r\n      endZoomInterval: formatedEndDte,\r\n      lockedZoomDuration: this.getDifferenceText(\r\n        Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n        Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n      ),\r\n    });\r\n    let currentSamplingType = this.getSamplingType(\r\n      Moment.utc(formatedStartDte, \"DD.MM.YYYY HH:mm:ss\").toISOString(),\r\n      Moment.utc(formatedEndDte, \"DD.MM.YYYY HH:mm:ss\").toISOString()\r\n    );\r\n\r\n    //await this.props.clearTrainViewMap();\r\n    //await this.props.clearDetailViewMap();\r\n    //await this.props.clearDetailViewMapDateSlider();\r\n    await this.props.clearDetailViewTimetrend();\r\n    await this.props.clearDetailViewScatterplot();\r\n    await this.props.clearDetailViewHistogram();\r\n    await this.props.addOverlay(null);\r\n    sessionStorage.setItem(\"zoomIntervalStartDate\", formatedStartDate);\r\n    sessionStorage.setItem(\"zoomIntervalEndDate\", formatedEndDate);\r\n    sessionStorage.setItem(\"samplingType\", currentSamplingType);\r\n    //sessionStorage.setItem(\"isTrendZoomed\", true);\r\n    sessionStorage.setItem(\"applyZoomInterval\", true);\r\n    sessionStorage.setItem(\"runClick\", true);\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      loading,\r\n      loadingMap,\r\n      loadingTimetrend,\r\n      startDate,\r\n      endDate,\r\n      selectedTrain,\r\n      mapData,\r\n      scatterplotdata,\r\n      timetrenddata,\r\n      histogramdata,\r\n      basicFilter,\r\n      advancedFilter,\r\n      selectedMainTrend,\r\n      selectedOverlaysTrend,\r\n      selectedMainScatter,\r\n      selectedTab,\r\n      mapTotalRuns,\r\n    } = this.props;\r\n    this.handleLoading();\r\n    //console.log(\"test\", this.state.lockedZoomDuration,this.state.startZoomInterval,this.state.endZoomInterval,sessionStorage.getItem(\"samplingType\"));\r\n    return (\r\n      <div>\r\n        <Breadcrumb\r\n          BreadcrumbIcon={\r\n            <img\r\n              src={require(\"../../assets/images/home.svg\")}\r\n              className={\"\"}\r\n              alt=\"Detail Train View\"\r\n            />\r\n          }\r\n          BreadcrumbPath={<FormattedMessage {...messages.header} />}\r\n          NumberofTrains={this.props.trainList && this.props.trainList.length}\r\n        />\r\n        <Row>\r\n          <Col md={12} className=\"addMarginTop\">\r\n            <Datepicker\r\n              onApplyClick={this.applyDateChange}\r\n              startDate={startDate}\r\n              endDate={endDate}\r\n            />\r\n          </Col>\r\n        </Row>\r\n        <Row className=\"addMarginTop\">\r\n          <Col md={3} className=\"sideMenucon\">\r\n            <SideMenu\r\n              onChange={this.changeBasicFilter}\r\n              onChangeAdvanced={this.changeAdvancedFilter}\r\n              clearBasicFilter={this.clearBasicFilter}\r\n              clearAdvancedFilter={this.clearAdvancedFilter}\r\n              onTrainSelect={this.onTrainSelect}\r\n              advanceFilter={\r\n                selectedTab === \"TREND_TYPE\" || selectedTab === \"SCATTER_TYPE\"\r\n                  ? true\r\n                  : false\r\n              }\r\n              trainno={selectedTrain}\r\n              basicFilter={basicFilter}\r\n              advancedFilter={advancedFilter}\r\n              trainList={this.props.trainList}\r\n              selectedTab={selectedTab}\r\n            />\r\n          </Col>\r\n          <Col md={9} className=\"detailViewRightinner\">\r\n            <SingleGraphPage\r\n              mapData={mapData}\r\n              timetrendata={timetrenddata}\r\n              scatterplotdata={this.props.filteredScatterData}\r\n              histogramdata={histogramdata}\r\n              selectedTrain={selectedTrain}\r\n              selectedMainTrend={selectedMainTrend}\r\n              selectedOverlaysTrend={selectedOverlaysTrend}\r\n              clickMainSignalTrend={this.clickMainSignalTrend}\r\n              clickOverlaySignalTrend={this.clickOverlaySignalTrend}\r\n              selectedMainScatter={this.state.scatterDropdownDefaultValue}\r\n              clickMainSignalScatter={this.clickMainSignalScatter}\r\n              basicFilter={basicFilter}\r\n              advancedFilter={advancedFilter}\r\n              loading={loading}\r\n              loadingMap={loadingMap}\r\n              loadingTimetrend={loadingTimetrend}\r\n              selectedTab={selectedTab}\r\n              onClickTab={this.onClickTab}\r\n              handleHistogramDropdownChange={this.handleHistogramDropdownChange}\r\n              getHistogramDataBasedonUserSelection={\r\n                this.getHistogramDataBasedonUserSelection\r\n              }\r\n              selectedSignalsHistogram={this.state}\r\n              handleScatterDropdownChange={this.handleScatterDropdownChange}\r\n              loadingScatterB2={this.props.loadingScatterB2}\r\n              startDate={this.props.startDate}\r\n              endDate={this.props.endDate}\r\n              setMainTrendSignal={this.props.setMainTrendSignal}\r\n              onMapDateSelect={this.onMapDateSelect}\r\n              selectedDate={selectedDate}\r\n              mapTotalRuns={mapTotalRuns}\r\n              onLoadMoreGraph={this.onLoadMoreGraph}\r\n              applyZoomInterval={this.applyZoomInterval}\r\n              isButtonDisabled={this.state.isButtonDisabled}\r\n              isApplyZoomEnabled={this.state.isApplyZoomEnabled}\r\n              startZoomInterval={this.state.startZoomInterval}\r\n              endZoomInterval={this.state.endZoomInterval}\r\n              lockedZoomDuration={this.state.lockedZoomDuration}\r\n              setZoomIntervalByRunSelection={this.setZoomIntervalByRunSelection}\r\n              addOverlay={this.props.addOverlay}\r\n              handleScatterplotAvgMaxChange={this.handleScatterplotAvgMaxChange}\r\n              scatterplotAvg={this.state.scatterplotAvg}\r\n              loadingOverlay={this.state.loadingOverlay}\r\n            />\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nDetailTrainView.defaultProps = {\r\n  selectedTrain: undefined,\r\n  basicFilter: undefined,\r\n  advancedFilter: undefined,\r\n  startTime: undefined,\r\n  endTime: undefined,\r\n  startTimeDate: undefined,\r\n  endTimeDate: undefined,\r\n  timetrenddata: undefined,\r\n  scatterplotdata: undefined,\r\n  histogramdata: undefined,\r\n};\r\n\r\nDetailTrainView.propTypes = {\r\n  selectedTrain: PropTypes.string,\r\n  basicFilter: PropTypes.object,\r\n  advancedFilter: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n  startTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  endTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  timetrenddata: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  scatterplotdata: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  histogramdata: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n\r\n  clickMainSignalTrend: PropTypes.func,\r\n  clickOverlaySignalTrend: PropTypes.func,\r\n  clickMainSignalScatter: PropTypes.func,\r\n};\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n  loading: loadingSelector(),\r\n  loadingMap: loadingMapSelector(),\r\n  loadingTimetrend: loadingTimetrendSelector(),\r\n  startDate: startDateSelector(),\r\n  endDate: endDateSelector(),\r\n  selectedTrain: selectedTrainSelector(),\r\n  timetrenddata: filteredTimetrendSelector(),\r\n  scatterplotdata: scatterplotSelector(),\r\n  scatterplotBothBogieData: scatterplotBothBogieSelector(),\r\n  filteredScatterData: filteredScatterSelector(),\r\n  basicFilter: basicFilterSelector(),\r\n  advancedFilter: advancedFilterSelector(),\r\n  selectedMainTrend: selectedMainTrendSelector(),\r\n  selectedOverlaysTrend: selectedOverlaysTrendSelector(),\r\n  selectedMainScatter: selectedMainScatterSelector(),\r\n  histogramdata: histogramSelector(),\r\n  selectedTab: selectedTabSelector(),\r\n  timetrendSlip1: timetrendSlip1Selector(),\r\n  timetrendSlip2: timetrendSlip2Selector(),\r\n  timetrendSpeed1: timetrendSpeed1Selector(),\r\n  timetrendSpeed2: timetrendSpeed2Selector(),\r\n  timetrendEffort1: timetrendEffort1Selector(),\r\n  timetrendEffort2: timetrendEffort2Selector(),\r\n  timetrendEffortDriving1: timetrendEffortDriving1Selector(),\r\n  timetrendEffortDriving2: timetrendEffortDriving2Selector(),\r\n  timetrendEffortBraking1: timetrendEffortBraking1Selector(),\r\n  timetrendEffortBraking2: timetrendEffortBraking2Selector(),\r\n  timetrendEffortBrakingMech1: timetrendEffortBrakingMech1Selector(),\r\n  timetrendEffortBrakingMech2: timetrendEffortBrakingMech2Selector(),\r\n  ttDrivingTrailerVel1: ttDrivingTrailerVel1Selector(),\r\n  ttEffortReference1: ttEffortReference1Selector(),\r\n  ttEffortReference2: ttEffortReference2Selector(),\r\n  ttSlipPower1: ttSlipPower1Selector(),\r\n  ttSlipPower2: ttSlipPower2Selector(),\r\n  ttPowerBrakingMechanical1: ttPowerBrakingMechanical1Selector(),\r\n  ttPowerBrakingMechanical2: ttPowerBrakingMechanical2Selector(),\r\n  ttAirPressureBrakeCylinder1: ttAirPressureBrakeCylinder1Selector(),\r\n  ttAirPressureBrakeCylinder2: ttAirPressureBrakeCylinder2Selector(),\r\n  ttAmplitudeTorsionalOscillation1: ttAmplitudeTorsionalOscillation1Selector(),\r\n  ttAmplitudeTorsionalOscillation2: ttAmplitudeTorsionalOscillation2Selector(),\r\n  mapSlip1: mapSlip1Selector(),\r\n  mapSlip2: mapSlip2Selector(),\r\n  mapSpeed1: mapSpeed1Selector(),\r\n  mapSpeed2: mapSpeed2Selector(),\r\n  mapEffort1: mapEffort1Selector(),\r\n  mapEffort2: mapEffort2Selector(),\r\n  mapEffortDriving1: mapEffortDriving1Selector(),\r\n  mapEffortDriving2: mapEffortDriving2Selector(),\r\n  mapEffortBraking1: mapEffortBraking1Selector(),\r\n  mapEffortBraking2: mapEffortBraking2Selector(),\r\n  mapEffortBrakingMech1: mapEffortBrakingMech1Selector(),\r\n  mapEffortBrakingMech2: mapEffortBrakingMech2Selector(),\r\n  mapDrivingTrailerVel1: mapDrivingTrailerVel1Selector(),\r\n  mapEffortReference1: mapEffortReference1Selector(),\r\n  mapEffortReference2: mapEffortReference2Selector(),\r\n  mapSlipPower1: mapSlipPower1Selector(),\r\n  mapSlipPower2: mapSlipPower2Selector(),\r\n  mapPowerBrakingMechanical1: mapPowerBrakingMechanical1Selector(),\r\n  mapPowerBrakingMechanical2: mapPowerBrakingMechanical2Selector(),\r\n  mapAirPressureBrakeCylinder1: mapAirPressureBrakeCylinder1Selector(),\r\n  mapAirPressureBrakeCylinder2: mapAirPressureBrakeCylinder2Selector(),\r\n  mapAmplitudeTorsionalOscillation1: mapAmplitudeTorsionalOscillation1Selector(),\r\n  mapAmplitudeTorsionalOscillation2: mapAmplitudeTorsionalOscillation2Selector(),\r\n  mapData: filteredMapSelector(),\r\n  mapTotalRuns: mapTotalRunsSelector(),\r\n  trainList: fleetDataSelector(),\r\n  loadingScatterB2: loadingScatterB2Selector(),\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n  getDetailViewMap,\r\n  getDetailViewTimetrend,\r\n  getDetailViewScatterplot,\r\n  setSelectedTrain,\r\n  setDate,\r\n  setBasicFilter,\r\n  setAdvancedFilter,\r\n  setMainTrendSignal,\r\n  setMainScatterSignal,\r\n  addOverlay,\r\n  clearBasicFilter,\r\n  clearAdvancedFilter,\r\n  getDetailViewHistogram,\r\n  setTab,\r\n  setTimetrendLoading,\r\n  fetchTrainList,\r\n  clearDetailViewMap,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n  clearTrainViewMap,\r\n  clearTrainViewHistogram,\r\n  getDetailViewMapDateSlider,\r\n  clearDetailViewMapDateSlider,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DetailTrainView);\r\n","/*\r\n * TrainView Messages\r\n *\r\n * This contains all the text for the TrainView component.\r\n */\r\nimport { defineMessages } from \"react-intl\";\r\n\r\nexport default defineMessages({\r\n  header: {\r\n    id: \"app.containers.TrainView.header\",\r\n    defaultMessage: \"Dashboard/Train view\"\r\n  }\r\n});\r\n","/*global google*/\r\nimport React, { Component } from \"react\";\r\nimport Alert from \"react-bootstrap/Alert\";\r\nimport {\r\n  withScriptjs,\r\n  withGoogleMap,\r\n  GoogleMap,\r\n  Polyline,\r\n  Marker,\r\n  //InfoWindow\r\n} from \"react-google-maps\";\r\nimport PropTypes from \"prop-types\";\r\nimport {\r\n  googleMapURL,\r\n  googleMapCustomStyle,\r\n} from \"../Googlemapkey/dashboardMapConfig\";\r\nimport { MarkerWithLabel } from \"react-google-maps/lib/components/addons/MarkerWithLabel\";\r\nlet prevPosition = undefined,\r\n  prevPositionIsvalidFalse = undefined,\r\n  gpsValid = 1;\r\nlet startPosition = null,\r\n  startFlag = true,\r\n  rows = [];\r\n\r\nconst TrainViewGoogleMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      defaultCenter={{ lat: 46.94809, lng: 7.44744 }}\r\n      /*defaultCenter={\r\n        props.positions[0].data[Math.round(props.positions[0].data.length / 2)]\r\n          .positions[0]\r\n      }*/\r\n      /*center={\r\n        props.markerPosition.lat === 0 && startPosition !== null\r\n          ? startPosition\r\n          : props.markerPosition\r\n      }*/\r\n      mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n        draggableCursor: \"move\",\r\n      }}\r\n    >\r\n      {/* <MarkerWithLabel\r\n        position={props.positions[0].positionsin[0]}\r\n        defaultAnimation={google.maps.Animation.DROP}\r\n        options={{ icon: require(\"../../assets/images/Blue_dot.svg\") }}\r\n        labelStyle={{\r\n          textAlign: \"center\",\r\n          fontSize: \"14px\",\r\n          color: \"#fff\",\r\n          fontWeight: 800\r\n        }}\r\n        labelClass=\"map-label\"\r\n        labelAnchor={{ x: 4, y: 35 }}\r\n      >\r\n        <span>{\"Place name\"}</span>\r\n      </MarkerWithLabel> */}\r\n      {\r\n        //(gpsValid = 1),\r\n        ((startFlag = true), (startPosition = null))\r\n        //(prevPosition = undefined),\r\n        //(prevPositionIsvalidFalse = undefined)\r\n      }\r\n      {props.positions.map((obj1, index1) => {\r\n        gpsValid = 1;\r\n        //startFlag = true;\r\n        //startPosition = null;\r\n        prevPosition = undefined;\r\n        prevPositionIsvalidFalse = undefined;\r\n        rows = [];\r\n        obj1.dat.map((obj, index) => {\r\n          if (index !== 0 && obj.gvd === 1) {\r\n            //&& props.positions.length - 1 !== index\r\n            /*if (gpsValid === 0) {\r\n              gpsValid = 2;\r\n              return;\r\n            }*/\r\n            if (gpsValid === 0 || gpsValid === 2) {\r\n              gpsValid = 1;\r\n              if (\r\n                prevPositionIsvalidFalse !== undefined &&\r\n                prevPositionIsvalidFalse[0].lat !== 0\r\n              ) {\r\n                //let currentColor = \"#C8C8C8\"; //LightGray\r\n                prevPositionIsvalidFalse[1].lat = obj.pos[1].lat;\r\n                prevPositionIsvalidFalse[1].lng = obj.pos[1].lng;\r\n                rows.push(\r\n                  <Polyline\r\n                    path={prevPositionIsvalidFalse}\r\n                    options={{\r\n                      strokeColor: \"#2e92fa\", //LightGray\r\n                      strokeWeight: 4,\r\n                    }}\r\n                  />\r\n                );\r\n                return;\r\n              } else {\r\n                return;\r\n              }\r\n            }\r\n\r\n            let currentColor =\r\n              props.basicFilter.bogie === 3 ? obj.cla : obj.clr;\r\n\r\n            if (currentColor === \"green\") currentColor = \"#0CA919\";\r\n            else if (currentColor === \"yellow\") currentColor = \"#FFD800\";\r\n            else if (currentColor === \"red\") currentColor = \"#F03040\";\r\n            else if (currentColor === \"gray\") currentColor = \"#545454\";\r\n\r\n            if (currentColor && obj.pos) {\r\n              if (\r\n                props.basicFilter.operation &&\r\n                !props.basicFilter.operation.find((item) => item == obj.ftr.opm)\r\n              )\r\n                currentColor = \"#C8C8C8\"; //LightGray\r\n              /*\r\n            //without any logic for testing\r\n            return (\r\n              <Polyline\r\n                path={obj.positions}\r\n                options={{\r\n                  strokeColor: currentColor,\r\n                  strokeWeight: 3\r\n                }}\r\n              />\r\n            );*/\r\n              if (obj.pos[0].lat !== 0 && obj.pos[1].lat !== 0) {\r\n                prevPositionIsvalidFalse = obj.pos;\r\n                prevPosition = undefined;\r\n                if (startFlag) {\r\n                  startPosition = obj.pos[0];\r\n                  startFlag = false;\r\n                }\r\n                rows.push(\r\n                  <Polyline\r\n                    path={obj.pos}\r\n                    options={{\r\n                      strokeColor: \"#2e92fa\",\r\n                      strokeWeight: 4,\r\n                    }}\r\n                  />\r\n                );\r\n                return;\r\n              } else if (obj.pos[0].lat !== 0 && obj.pos[1].lat === 0) {\r\n                prevPosition = obj.pos;\r\n                prevPositionIsvalidFalse = undefined;\r\n                console.log(\"10\");\r\n              } else if (obj.pos[0].lat === 0 && obj.pos[1].lat !== 0) {\r\n                if (prevPosition !== undefined) {\r\n                  prevPosition[1].lat = obj.pos[1].lat;\r\n                  prevPosition[1].lng = obj.pos[1].lng;\r\n                  console.log(\"01\");\r\n                  rows.push(\r\n                    <Polyline\r\n                      path={prevPosition}\r\n                      options={{\r\n                        strokeColor: \"#2e92fa\",\r\n                        strokeWeight: 4,\r\n                      }}\r\n                    />\r\n                  );\r\n                  return;\r\n                }\r\n              }\r\n            }\r\n          } else if (index !== 0 && obj.gvd === 0) {\r\n            gpsValid = 0;\r\n          }\r\n        });\r\n        return rows;\r\n      })}\r\n      <Marker\r\n        position={\r\n          props.markerPosition.lat === 0 && startPosition !== null\r\n            ? startPosition\r\n            : props.markerPosition\r\n        }\r\n        defaultAnimation={google.maps.Animation.DROP}\r\n        // options={{\r\n        //   icon: {\r\n        //     url: require(\"../../assets/images/Arrow_direction.png\"),\r\n        //     scaledSize: { width: 40, height: 40 },\r\n        //     anchor: { x: 20, y: 20 },\r\n        //   }\r\n        // }}\r\n        // draggable={true}\r\n        options={{\r\n          icon: {\r\n            url: require(\"../../assets/images/Google_Train_icon.svg\"),\r\n            scale: 5,\r\n            fillColor: \"#2e92fa\",\r\n            fillOpacity: 0.9,\r\n            strokeWeight: 0,\r\n            anchor: { x: 15, y: 15 },\r\n            //rotation: -45\r\n          },\r\n        }}\r\n      ></Marker>\r\n    </GoogleMap>\r\n  ))\r\n);\r\n\r\nconst NoDashbordMap = withScriptjs(\r\n  withGoogleMap((props) => (\r\n    <GoogleMap\r\n      defaultZoom={8}\r\n      defaultCenter={{ lat: 46.948393, lng: 7.435987 }}\r\n      // mapTypeId={\"terrain\"}\r\n      options={{\r\n        styles: googleMapCustomStyle,\r\n        streetViewControl: false,\r\n      }}\r\n    />\r\n  ))\r\n);\r\n\r\nclass TrainViewMap extends Component {\r\n  constructor(props) {\r\n    super(props);\r\n    gpsValid = 1;\r\n    prevPositionIsvalidFalse = undefined;\r\n    prevPosition = undefined;\r\n  }\r\n  componentWillReceiveProps(nextProps) {\r\n    gpsValid = 1;\r\n    prevPositionIsvalidFalse = undefined;\r\n    prevPosition = undefined;\r\n  }\r\n\r\n  render() {\r\n    return (\r\n      <div id=\"multicolormap\">\r\n        {this.props.mapData !== undefined &&\r\n        this.props.mapData !== null &&\r\n        this.props.mapData.length > 0 ? (\r\n          <TrainViewGoogleMap\r\n            googleMapURL={googleMapURL}\r\n            loadingElement={<div style={{ height: `100%` }} />}\r\n            containerElement={<div style={{ height: `55vh` }} />}\r\n            mapElement={<div style={{ height: `100%` }} />}\r\n            markerPosition={\r\n              this.props.markerPosition.lat === 0 ||\r\n              this.props.markerPosition.lng === 0\r\n                ? this.props.mapData[0].dat[0].gvd !== 0\r\n                  ? this.props.mapData[0].dat[0].pos[1]\r\n                  : this.props.markerPosition\r\n                : this.props.markerPosition\r\n            } //{this.props.markerPosition}\r\n            positions={this.props.mapData}\r\n            basicFilter={this.props.basicFilter}\r\n          />\r\n        ) : (\r\n          <div>\r\n            <div className=\"nodatanotificationcontainer\">\r\n              <Alert variant=\"danger\" id=\"nodatanotification\" dismissible>\r\n                <p className=\"nodatanotificationcontent\">\r\n                  No data recorded on selected day.\r\n                </p>\r\n              </Alert>\r\n            </div>\r\n            <div className=\"disabledcontent\">\r\n              <NoDashbordMap\r\n                googleMapURL={googleMapURL}\r\n                loadingElement={<div style={{ height: `100%` }} />}\r\n                containerElement={<div style={{ height: `55vh` }} />}\r\n                mapElement={<div style={{ height: `100%` }} />}\r\n              />\r\n            </div>\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nTrainViewMap.defaultProps = {};\r\n\r\nTrainViewMap.propTypes = {\r\n  mapPath: PropTypes.any,\r\n};\r\n\r\nexport default TrainViewMap;\r\n","import Highcharts from \"highcharts/highstock\";\r\nimport exportChart from \"../../assets/images/exportChart.svg\";\r\nimport debug from \"debug\";\r\nimport Moment from \"moment\";\r\n\r\nexport const colors = [\r\n  \"#5abfae\", //Teal 40\r\n  \"#ED5739\", //  Orange 50\r\n  \"#005CA3\", //Blue 70\r\n  \"#d98f45\", //Gold 40\r\n  \"#1e6119\", //Green 70\r\n  \"#a30005\", // Red 80\r\n  \"#686868\", //Grey 60\r\n  \"#753B00\", //Gold 70\r\n  \"#E64997\", // Magenta 50\r\n  \"#b5aa0d\", //Yellow 40\r\n];\r\n\r\nexport function checkChatValues(chartValues) {\r\n  let isVisible = \"\";\r\n  for (let i = 0; i < chartValues.length - 1; i++) {\r\n    if (\r\n      chartValues[i].config.label.indexOf(\"B1\") !== -1 &&\r\n      chartValues[i + 1].config.label.indexOf(\"B2\") !== -1\r\n    ) {\r\n      isVisible = false;\r\n    } else {\r\n      isVisible = true;\r\n    }\r\n  }\r\n  return isVisible;\r\n}\r\n\r\nexport function getSingleTrendData(\r\n  selectedOverlays,\r\n  chart,\r\n  selectedMain,\r\n  filter\r\n) {\r\n  const ranges = [];\r\n  const average = [];\r\n  const configs = [];\r\n  const colors = [\r\n    \"#5abfae\", //Teal 40\r\n    \"#ED5739\", //  Orange 50\r\n    \"#005CA3\", //Blue 70\r\n    \"#d98f45\", //Gold 40\r\n    \"#1e6119\", //Green 70\r\n    \"#a30005\", // Red 80\r\n    \"#686868\", //Grey 60\r\n    \"#753B00\", //Gold 70\r\n    \"#E64997\", // Magenta 50\r\n    \"#b5aa0d\", //Yellow 40\r\n  ];\r\n  let rangedata = [],\r\n    averages = [],\r\n    xaxisvalue = [],\r\n    seriesValues = [],\r\n    xAxis,\r\n    yAxis = [];\r\n\r\n  let chartValues = [];\r\n  /*chartValues.push(...chart.filter(item => item.config.label === selectedMain));\r\n  selectedOverlays &&\r\n    selectedOverlays.map(value =>\r\n      chartValues.push(...chart.filter(item => item.config.label === value))\r\n    );*/\r\n  console.log(\r\n    \"Filter: \",\r\n    filter.operation,\r\n    \" Chart: \",\r\n    chart,\r\n    \" SelectedMain: \",\r\n    selectedMain\r\n  );\r\n  chartValues = chart;\r\n\r\n  for (let j = 0; j < chartValues.length; j += 1) {\r\n    rangedata = [];\r\n    averages = [];\r\n    xaxisvalue = [];\r\n\r\n    for (let i = 0; i < chartValues[j].data.length; i += 1) {\r\n      const item = chartValues[j].data[i];\r\n\r\n      //if (!item.value) {\r\n      let formatedDate = Moment.utc(item.ts).format(\"HH:mm:ss\");\r\n      xaxisvalue.push([formatedDate]);\r\n      averages.push([formatedDate, item.avg]);\r\n      rangedata.push([formatedDate, item.min, item.max]);\r\n      // } else {\r\n      //averages.push([item.timeStamp, item.value]);\r\n      // }\r\n    }\r\n\r\n    seriesValues.push(\r\n      {\r\n        name: chartValues[j].config.label,\r\n        type: \"line\",\r\n        color: colors[j],\r\n        data: averages,\r\n        tooltip: {\r\n          pointFormatter: function () {\r\n            var point = this;\r\n            if (filter.bogie === 3) {\r\n              const seriesTwo = point.series.chart.series[2];\r\n              return (\r\n                `<span style=\"color:${point.color}\">\\u25CF</span> ` +\r\n                `<b>${point.series.name}</b>: <b>${point.y} ${chartValues[j].config.unit}</b><br/>` +\r\n                `<span style=\"color:${seriesTwo.color}\">\\u25CF</span>` +\r\n                `<b>${seriesTwo.name}</b>: <b>${\r\n                  seriesTwo.data[point.index].y\r\n                } ${chartValues[j].config.unit}</b>`\r\n              );\r\n            } else {\r\n              return (\r\n                '<span style=\"color:' +\r\n                point.color +\r\n                '\">\\u25CF</span> ' +\r\n                point.series.name +\r\n                \": <b>\" +\r\n                point.y +\r\n                \" \" +\r\n                chartValues[j].config.unit +\r\n                \"</b><br/>\"\r\n              );\r\n            }\r\n          },\r\n        },\r\n        boostThreshold: 0,\r\n        turboThreshold: Number.MAX_VALUE,\r\n      },\r\n      {\r\n        name: chartValues[j].config.label,\r\n        type: \"arearange\",\r\n        data: rangedata,\r\n        lineWidth: 0,\r\n        linkedTo: \":previous\",\r\n        color: colors[j],\r\n        fillOpacity: 0.3,\r\n        zIndex: 0,\r\n        marker: {\r\n          enabled: false,\r\n        },\r\n        // tooltip: {\r\n        //   //valueSuffix: \" \" + chartValues[j].config.unit,\r\n        // },\r\n        yAxis: j,\r\n        boostThreshold: 0,\r\n        turboThreshold: Number.MAX_VALUE,\r\n      }\r\n    );\r\n\r\n    yAxis.push({\r\n      opposite: j !== 0,\r\n      min:\r\n        chartValues[j].config.label.indexOf(\"Slip\") !== -1\r\n          ? -15\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? -160\r\n          : chartValues[j].config.label.indexOf(\"Speed\") !== -1\r\n          ? -20\r\n          : null,\r\n      max:\r\n        chartValues[j].config.label.indexOf(\"Slip\") !== -1\r\n          ? 15\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? 160\r\n          : chartValues[j].config.label.indexOf(\"Speed\") !== -1\r\n          ? 225\r\n          : null,\r\n      tickInterval:\r\n        chartValues[j].config.label.indexOf(\"EffortBrakingMechanical\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"EffortDriving\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"EffortBraking\") !== -1\r\n          ? 27\r\n          : chartValues[j].config.label.indexOf(\"Effort\") !== -1\r\n          ? 27\r\n          : undefined,\r\n      title: {\r\n        enabled: false,\r\n        text: `${chartValues[j].config.label} ${chartValues[j].config.unit}`,\r\n        style: {\r\n          color: j !== 0 ? colors[j] : colors[0],\r\n        },\r\n      },\r\n      labels: {\r\n        format: `{value}`, //`{value} ${chartValues[j].config.unit}`,\r\n        style: {\r\n          color: j !== 0 ? colors[j] : colors[0],\r\n        },\r\n      },\r\n      id: `${chartValues[j].config.label}`,\r\n      visible:\r\n        chartValues[j].config.label.indexOf(\"B2\") !== -1 &&\r\n        checkChatValues(chartValues) === false\r\n          ? false\r\n          : true,\r\n    });\r\n\r\n    xAxis = [\r\n      {\r\n        categories: xaxisvalue,\r\n        crosshair: true,\r\n        gridLineWidth: 1,\r\n        gridLineColor: \"#e9e9e9\",\r\n        tickInterval: 10,\r\n        crosshair: {\r\n          width: 1,\r\n          color: \"#0b73c2\",\r\n        },\r\n        labels: {\r\n          // formatter: function() {\r\n          //   return Highcharts.dateFormat(\"%H:%M:%S \", 1 * 1000); // milliseconds not seconds\r\n          // }\r\n        },\r\n      },\r\n    ];\r\n  }\r\n\r\n  return {\r\n    xAxis,\r\n    yAxis,\r\n    series: seriesValues,\r\n  };\r\n}\r\n\r\nexport function getTrendChart(selectedOverlays, chart, selectedMain, filter) {\r\n  const data = getSingleTrendData(\r\n    selectedOverlays,\r\n    chart,\r\n    selectedMain,\r\n    filter\r\n  );\r\n  let options = {\r\n    chart: {\r\n      plotBackgroundColor: null,\r\n      plotBorderWidth: null,\r\n      plotShadow: false,\r\n      // zoomType: \"x\",\r\n      //panning: true,\r\n      //panKey: \"shift\",\r\n      //marginBottom: 60,\r\n      borderColor: \"#dbdbdb\",\r\n      borderWidth: 1,\r\n      height: 300,\r\n      marginBottom: 80,\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    title: {\r\n      text: null,\r\n    },\r\n    // subtitle: {\r\n    //   text: \"\"\r\n    // },\r\n    xAxis: data.xAxis,\r\n    yAxis: data.yAxis,\r\n    tooltip: {\r\n      //shared: true\r\n    },\r\n    plotOptions: {\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n      },\r\n      line: {\r\n        allowPointSelect: false,\r\n        cursor: \"pointer\",\r\n        dataLabels: {\r\n          enabled: false,\r\n        },\r\n        showInLegend: true,\r\n        gapSize: 5,\r\n      },\r\n      arearange: {\r\n        cursor: \"pointer\",\r\n      },\r\n      series: {\r\n        enableMouseTracking: false,\r\n      },\r\n    },\r\n    legend: {\r\n      enabled: true,\r\n      align: \"left\",\r\n      verticalAlign: \"top\",\r\n      padding: 0,\r\n      itemMarginTop: 10,\r\n      itemMarginBottom: 10,\r\n      //layout: \"horizontal\",\r\n      x: 0,\r\n      y: 0,\r\n      //floating: true,\r\n      symbolPadding: 5,\r\n      symbolWidth: 10,\r\n      itemStyle: {\r\n        color: \"#000000\",\r\n        fontWeight: \"normal\",\r\n        fontSize: \"12px\",\r\n      },\r\n      backgroundColor:\r\n        (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||\r\n        \"rgba(255,255,255,0.25)\",\r\n    },\r\n    series: data.series,\r\n    exporting: {\r\n      enabled: false,\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 3,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n\r\nexport function getScatterSingleSignal(data, trendsParam, props, lang) {\r\n  // if (!data || !props || !props.selectedScatter) return null;\r\n  // debug(\"dev\")(\"getScatterSingleSignal\", data, trendsParam, props);\r\n  const current = [];\r\n  let config;\r\n  let j = 1;\r\n  let color = 0;\r\n  data.forEach((c) => {\r\n    // if (c.config.code.toUpperCase() === props.selectedScatter.toUpperCase()) {\r\n    //   const color = c.color ? c.color : Highcharts.getOptions().colors[j];\r\n    //   current.push({\r\n    //     name: c.series[0].name,\r\n    //     data: c.series[0].data,\r\n    //     color,\r\n    //     turboThreshold: 0,\r\n    //     marker: {\r\n    //       fillColor: color,\r\n    //       radius: 2\r\n    //     }\r\n    //   });\r\n    //   ({ config } = c);\r\n    //   j += 1;\r\n    // }\r\n\r\n    current.push({\r\n      name: c.config.bnm,\r\n      color: colors[color],\r\n      data: c.data,\r\n      boostThreshold: 10000,\r\n      turboThreshold: Number.MAX_VALUE,\r\n      marker: {\r\n        radius: 3,\r\n      },\r\n    });\r\n    j += 1;\r\n    color += 1;\r\n  });\r\n\r\n  const options = {\r\n    chart: {\r\n      name: \"scatterData\",\r\n      type: \"scatter\",\r\n      marginTop: 70,\r\n      enableMouseTracking: true,\r\n      plotBackgroundColor: null,\r\n      plotBorderWidth: null,\r\n      plotShadow: false,\r\n      //zoomType: \"xy\",\r\n      shadow: false,\r\n      resetZoomButton: {\r\n        position: {\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          x: -40,\r\n          y: 5,\r\n        },\r\n        relativeTo: \"chart\",\r\n      },\r\n      borderColor: \"#dbdbdb\",\r\n      borderWidth: 1,\r\n      height: 300,\r\n      marginBottom: 50,\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    //trends: \"Slip vs Speed\",\r\n    title: {\r\n      text: null,\r\n    },\r\n    subtitle: {\r\n      text: `${data[0].documentType} <span class=\"sampleinterval\">(${data[0].resampleInterval} sampling)</span>`,\r\n      style: {\r\n        fontSize: \"11px\",\r\n        marginBottom: \"8px\",\r\n      },\r\n    },\r\n    xAxis: {\r\n      className: \"scatter-x-axis\",\r\n      tickInterval: 5,\r\n      //max: 235,\r\n      title: {\r\n        enabled: false,\r\n        text: `<b>${data[0].config.xsn}</b>`,\r\n        align: \"middle\",\r\n      },\r\n      startOnTick: true,\r\n      endOnTick: false,\r\n      showLastLabel: true,\r\n      labels: {\r\n        y: 25,\r\n      },\r\n    },\r\n    yAxis: {\r\n      className: \"scatter-y-axis\",\r\n      title: {\r\n        enabled: false,\r\n        text: `<b>${data[0].config.ysn}</b>`,\r\n        align: \"middle\",\r\n        // rotation: 0,\r\n        // y: -15,\r\n        // x: -5,\r\n        // align: \"high\"\r\n        // offset: 0\r\n      },\r\n    },\r\n    legend: {\r\n      enabled: true,\r\n      layout: \"horizontal\",\r\n      align: \"left\",\r\n      verticalAlign: \"top\",\r\n      //x: 150,\r\n      y: 20,\r\n      floating: true,\r\n      backgroundColor: Highcharts.defaultOptions.chart.backgroundColor,\r\n      borderWidth: 0,\r\n      itemStyle: {\r\n        color: \"#000000\",\r\n        fontWeight: \"normal\",\r\n        fontSize: \"12px\",\r\n      },\r\n    },\r\n    plotOptions: {\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n        // states: {\r\n        //   inactive: {\r\n        //     opacity: 0\r\n        //   }\r\n        // },\r\n        // animation: {\r\n        //   duration: 2000\r\n        // }\r\n      },\r\n      scatter: {\r\n        // states: {\r\n        //   inactive: {\r\n        //     opacity: 1\r\n        //   }\r\n        // },\r\n        /*tooltip: {\r\n          headerFormat: \"<b>{series.name}</b><br>\",\r\n          pointFormat: `${data[0].config.xSignalName}: <b>{point.x} ${\r\n            data[0].config.xSignalUnit\r\n          }</b><br />${data[0].config.ySignalName}: <b>{point.y}${\r\n            data[0].config.ySignalUnit\r\n          } </b><br />${\"Date/Time\"}: <b>{point.timeStamp}</b>`\r\n        }*/\r\n      },\r\n    },\r\n    tooltip: {\r\n      formatter: function () {\r\n        return `<b>${this.point.series.name}</b><br>\r\n      ${data[0].config.xsn}: <b>${this.point.x} ${\r\n          data[0].config.xsu\r\n        }</b><br />${data[0].config.ysn}: <b>${this.point.y} ${\r\n          data[0].config.ysu\r\n        } </b><br />${\"Date/Time\"}:<b> ${Moment.utc(this.point.ts).format(\r\n          \"DD.MM.YYYY HH:mm:ss\"\r\n        )}</b>`;\r\n      },\r\n    },\r\n    series: current,\r\n    /* series: [\r\n      {\r\n        name: \"Bogie1\",\r\n        //color: 'rgba(223, 83, 83, .5)',\r\n        data: data[1].data\r\n      }\r\n    ],*/\r\n\r\n    exporting: {\r\n      enabled: false,\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 3,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n\r\n// histogram\r\nexport function getHistogramSingleSignal(seriesData) {\r\n  // if (!chart || !props) return null;\r\n  //debug('dev')('Histogram:', chart, props);\r\n  console.log(\"Histogram Func()\");\r\n  let title;\r\n  let unit;\r\n  const options = {\r\n    chart: {\r\n      type: \"heatmap\",\r\n      marginTop: 57,\r\n      // events: {\r\n      //   load: function() {\r\n      //     document.getElementById(\"chartLoader\").style.display = \"none\";\r\n      //   }\r\n      // },\r\n      //inverted: true\r\n      panning: true,\r\n      panKey: \"shift\",\r\n      //marginBottom: 60,\r\n      borderColor: \"#dbdbdb\",\r\n      borderWidth: 1,\r\n      height: 300,\r\n      marginBottom: 50,\r\n      // events: {\r\n      //   load: function() {\r\n      //     document.getElementById(\"chartLoader\").style.display = \"none\";\r\n      //   }\r\n      // }\r\n    },\r\n    credits: {\r\n      enabled: false,\r\n    },\r\n    title: {\r\n      text: null,\r\n    },\r\n    subtitle: {\r\n      text: ` ${seriesData.doc}`,\r\n    },\r\n    xAxis: [\r\n      {\r\n        // title: {\r\n        //   text: `${seriesData.signalConfig.xSignalName} [${\r\n        //     seriesData.signalConfig.xSignalUnit\r\n        //   }]`\r\n        // },\r\n        startOnTick: true,\r\n        minRange: 20,\r\n        gridZIndex: 0,\r\n        gridLineWidth: 0,\r\n        gridLineColor: \"#dbdbdb\",\r\n        tickInterval: 10,\r\n      },\r\n    ],\r\n    boost: {\r\n      useGPUTranslations: true,\r\n      usePreAllocated: true,\r\n    },\r\n    yAxis: {\r\n      // min: 111,\r\n      // max: 161,\r\n      title: {\r\n        // text: ` ${seriesData.signalConfig.ySignalName} [${\r\n        //   seriesData.signalConfig.ySignalUnit\r\n        // }]`\r\n        text: null,\r\n      },\r\n      minPadding: 0,\r\n      maxPadding: 0,\r\n      startOnTick: true,\r\n      endOnTick: false,\r\n      //tickPositions: [0, 6, 12, 18, 24],\r\n      minRange: 20,\r\n      // tickInterval: 10,\r\n      tickWidth: 1,\r\n      gridZIndex: 0,\r\n      gridLineWidth: 0,\r\n      gridLineColor: \"#dbdbdb\",\r\n      reversed: false,\r\n    },\r\n    colorAxis: {\r\n      stops: [\r\n        [0, \"#ffffff\"],\r\n        [0.1, \"#bfedbb\"],\r\n        [0.2, \"#98d694\"],\r\n        [0.3, \"#0ca919\"],\r\n        [0.4, \"#d6c918\"],\r\n        [0.5, \"#ffd800\"],\r\n        [0.6, \"#ff7300\"],\r\n        [0.7, \"#ff4754\"],\r\n        [0.8, \"#f03040\"],\r\n        [0.9, \"#e12e2e\"],\r\n        [1, \"#cc0815\"],\r\n      ],\r\n      reversed: false,\r\n      // min: -6,\r\n      //  max: 5,\r\n      // minColor: \"#dadada\",\r\n      // maxColor: \"#c4463a\",\r\n      startOnTick: false,\r\n      endOnTick: true,\r\n      labels: false,\r\n      // labels: {\r\n      //   format: `{value} [s]`\r\n      // }\r\n    },\r\n    series: [\r\n      {\r\n        // boostThreshold: 11653,\r\n        //colsize: 10,\r\n        //borderIndex: 0,\r\n        //borderColor: \"#e5e5e5\",\r\n        //borderWidth: 0,\r\n        colsize: seriesData.bin,\r\n        rowsize: seriesData.bin,\r\n        turboThreshold: Number.MAX_VALUE,\r\n        nullColor: \"#ffffff\",\r\n        data: seriesData.dat,\r\n        states: {\r\n          hover: {\r\n            enabled: false,\r\n          },\r\n        },\r\n        dataLabels: {\r\n          enabled: false,\r\n          color: \"#000000\",\r\n        },\r\n      },\r\n    ],\r\n    /*tooltip: {\r\n      formatter: function() {\r\n        return `${seriesData.signalConfig.xSignalName}: <b>${this.point.x} ${\r\n          seriesData.signalConfig.xSignalUnit\r\n        } </b><br />\r\n          ${seriesData.signalConfig.ySignalName}: <b> ${this.point.y} ${\r\n          seriesData.signalConfig.ySignalUnit\r\n        }</b><br />${\"Value\"}: <b>${this.point.value} ${\"s\"}</b>`;\r\n      }\r\n    },*/\r\n    tooltip: {\r\n      formatter: function () {\r\n        return `${seriesData.cfg.xsn}: <b>${this.point.x} ${\r\n          seriesData.cfg.xsu\r\n        }</b><br />\r\n      ${seriesData.cfg.ysn}: <b> ${this.point.y} ${\r\n          seriesData.cfg.ysu\r\n        }</b><br />${\"Occurrence\"}: <b>${this.point.nlv} ${\"s\"}</b>`;\r\n      },\r\n    },\r\n    legend: {\r\n      align: \"right\",\r\n      layout: \"vertical\",\r\n      verticalAlign: \"top\",\r\n      y: 40,\r\n      symbolWidth: 12,\r\n      symbolHeight: 190,\r\n    },\r\n    plotOptions: {\r\n      heatmap: {\r\n        cursor: \"zoom-in\",\r\n      },\r\n      series: {\r\n        stickyTracking: false,\r\n        animation: false,\r\n      },\r\n    },\r\n    exporting: {\r\n      enabled: false,\r\n      buttons: {\r\n        contextButton: {\r\n          _id: \"custom_export\",\r\n          symbol: `url(${exportChart})`,\r\n          symbolX: 25,\r\n          symbolY: 30,\r\n          align: \"right\",\r\n          verticalAlign: \"top\",\r\n          height: 28,\r\n          width: 32,\r\n          symbolSize: 22,\r\n          y: 3,\r\n          x: 0,\r\n          theme: {\r\n            states: {\r\n              hover: {\r\n                fill: \"transparent\",\r\n              },\r\n              pressed: {\r\n                fill: \"transparent\",\r\n              },\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  };\r\n\r\n  return options;\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Highcharts from \"highcharts\";\r\nimport HC_exporting from \"highcharts/modules/exporting\";\r\nimport highchartsMore from \"highcharts/highcharts-more\";\r\n\r\nimport \"./styles.scss\";\r\nimport {\r\n  getTrendChart,\r\n  getScatterSingleSignal,\r\n  getHistogramSingleSignal\r\n} from \"./function\";\r\n\r\nhighchartsMore(Highcharts);\r\nHC_exporting(Highcharts);\r\nlet starting = 0;\r\nexport default class Graph extends React.Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n\r\n    const options = this.initGraph(props);\r\n    this.state = { options };\r\n  }\r\n\r\n  componentDidMount() {\r\n    this.draw(this.props);\r\n    //this.chart.reflow();\r\n  }\r\n\r\n  componentWillReceiveProps(nextProps, nextState) {\r\n    //this.chart.destroy();\r\n    //this.draw(nextProps);\r\n  }\r\n\r\n  shouldComponentUpdate(nextProps) {\r\n    //console.log(\"NextProps: \", nextProps);\r\n    if (this.props.basicFilter != nextProps.basicFilter) {\r\n      return true;\r\n    } else if (this.props.data != nextProps.data) {\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  componentDidUpdate() {\r\n    this.chart.destroy();\r\n    const options = this.initGraph();\r\n    this.state = {\r\n      options\r\n    };\r\n    this.draw(this.props);\r\n  }\r\n\r\n  componentWillUnmount() {\r\n    this.chart.destroy();\r\n  }\r\n\r\n  draw(props) {\r\n    this.chart = Highcharts.chart(this.container, { ...this.state.options });\r\n    this.chart.reflow();\r\n  }\r\n\r\n  initGraph = props => {\r\n    let options;\r\n    if (this.props.chartType === \"TREND_TYPE\") {\r\n      options = getTrendChart(\r\n        this.props.selectedOverlaysTrend,\r\n        this.props.data,\r\n        this.props.selectedMainTrend,\r\n        this.props.basicFilter\r\n      );\r\n    } else if (this.props.chartType === \"SCATTER_TYPE\") {\r\n      /*options = getScatterSingleSignal(\r\n        this.props.data,\r\n        \"trends\",\r\n        { selectedScatter: this.props.selectedMainScatter },\r\n        { timestamp: \"lang\" }\r\n      );*/\r\n\r\n      options = getScatterSingleSignal(this.props.data);\r\n    } else if (this.props.chartType === \"HISTOGRAM_TYPE\") {\r\n      options = getHistogramSingleSignal(this.props.data);\r\n    }\r\n\r\n    if (Highcharts.getOptions().exporting) {\r\n      const contextButton = Highcharts.getOptions().exporting.buttons\r\n        .contextButton; // eslint-disable-line\r\n      contextButton.menuItems = contextButton.menuItems.filter(item => {\r\n        return item !== \"downloadPDF\";\r\n      });\r\n    }\r\n\r\n    return options;\r\n  };\r\n\r\n  showTooltip = (num = 0, e) => {\r\n    let xAxis = this.chart.xAxis[0];\r\n    let points = this.chart.series[0].points;\r\n    this.chart.tooltip.hide();\r\n    this.chart.tooltip.refresh(points[num % points.length]);\r\n    xAxis.drawCrosshair(e, points[num % points.length]);\r\n    // Highcharts.wrap((Highcharts.charts[0].tooltip.isHidden = true));\r\n    Highcharts.wrap(Highcharts.Tooltip.prototype, \"hide\", function(proceed) {});\r\n\r\n    console.log(\"calling child method\", Highcharts.charts, Highcharts);\r\n  };\r\n\r\n  render() {\r\n    /*if (this.chart) {\r\n      if (this.props.loadingTimetrend) {\r\n        this.chart.hideLoading();\r\n      } else {\r\n        this.chart.showLoading(\"Loading...\");\r\n      }\r\n    }*/\r\n\r\n    /*if (errorCharts) {\r\n      return (\r\n        <ErrorComponent\r\n          error={errorCharts}\r\n          status={formatMessage({ id: \"application.sorryText\" })}\r\n          statusText={formatMessage(\r\n            { id: \"application.backendError\" },\r\n            {\r\n              code: errorCharts[0] ? errorCharts[0].code : errorCharts.status,\r\n              detail: errorCharts[0]\r\n                ? errorCharts[0].message\r\n                : errorCharts.statusText\r\n            }\r\n          )}\r\n        />\r\n      );\r\n    }*/\r\n    return (\r\n      <div\r\n        id=\"graph_chart\"\r\n        className=\"graphchart\"\r\n        ref={ref => (this.container = ref)}\r\n        onClick={() => this.props.onClick(this.props.chartType)}\r\n      />\r\n    );\r\n  }\r\n}\r\n\r\nGraph.defaultProps = {};\r\n\r\nGraph.propTypes = {\r\n  chart: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  overlayData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  selectedOverlays: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n\r\n  selectedGraph: PropTypes.string,\r\n  onLoadGraph: PropTypes.func.isRequired,\r\n  startTimeDate: PropTypes.object,\r\n  endTimeDate: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n\r\n  errorCharts: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\r\n  isLoading: PropTypes.bool.isRequired,\r\n  chartType: PropTypes.number.isRequired\r\n};\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class SelectorLine extends Component {\r\n  render() {\r\n    let currentColor;\r\n    currentColor = this.props.currentColor;\r\n\r\n    if (this.props.operation != \"\" || this.props.gpsValid === 0)\r\n      currentColor = \"grey\";\r\n\r\n    return (\r\n      <div\r\n        style={{\r\n          width: this.props.colorArea + \"%\",\r\n          backgroundColor: currentColor\r\n        }}\r\n        className=\"railStyle\"\r\n      />\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { Slider, Rail, Handles } from \"react-compound-slider\";\r\nimport { Row } from \"react-bootstrap\";\r\nimport SelectorLine from \"./rangeLine\";\r\nimport Moment from \"moment\";\r\n\r\nexport function Handle({\r\n  handle: { id, value, percent },\r\n  getHandleProps,\r\n  mapData,\r\n  basicFilter,\r\n  unit\r\n}) {\r\n  //let leftMargin = percent === 100 ? 99.5427 : percent; //temp(Want to remove after time arrow icon change)\r\n  //let changeiconmargin = percent >= 100 ? \"changeiconmargin\" : \"\";\r\n  let changetextdirection = percent >= 80 ? \"timearrowtext\" : \"\";\r\n  let km = mapData[value];\r\n  km = basicFilter.bogie == 3 ? km.ava : km.avg;\r\n  let formaTdate = Moment.utc(mapData[value].ts).format(\r\n    \"DD.MM.YYYY HH:mm:ss\"\r\n  );\r\n\r\n  return (\r\n    <div\r\n      className=\"dragIcon\"\r\n      style={{\r\n        left: `${percent}%`\r\n      }}\r\n      {...getHandleProps(id)}\r\n    >\r\n      <div className=\"selectedInterval\" id={changetextdirection}>\r\n        {formaTdate + \" \" + km + \"\" + unit}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default class DistanceSelector extends Component {\r\n  render() {\r\n    const { selectedTrain, mapData, onUpdate, basicFilter, unit } = this.props;\r\n    const min = 0,\r\n      max = this.props.mapData.length - 1;\r\n    return (\r\n      <Col md={12} className=\"containerdistanceselector\">\r\n        <Row>\r\n          <Col md={3}>\r\n            <img\r\n              src={require(\"../../assets/images/subway.svg\")}\r\n              className=\"icontrain\"\r\n            />\r\n            <span className=\"text\">{selectedTrain}</span>\r\n          </Col>\r\n          <Col md={9}>\r\n            <div\r\n            // style={{\r\n            //   width: (100 / mapData.data.length) * mapData.data.length + \"%\"\r\n            // }}\r\n            >\r\n              <Slider\r\n                className=\"sliderStyle\"\r\n                domain={[min, max]}\r\n                step={1}\r\n                mode={2}\r\n                values={[min]}\r\n                onUpdate={onUpdate}\r\n              >\r\n                <Rail>\r\n                  {({ getRailProps }) => {\r\n                    let colorArea = 100 / mapData.length;\r\n                    let currentColor, operation;\r\n                    return (\r\n                      <div className=\"colorarea\">\r\n                        {mapData.map(\r\n                          item => (\r\n                            /*<SelectorLine\r\n                            colorArea={colorArea}\r\n                            currentColor={\r\n                              basicFilter.bogie === 3\r\n                                ? item.colorAll\r\n                                : item.color\r\n                            }\r\n                            operation={\r\n                              basicFilter.operation &&\r\n                              !basicFilter.operation.find(\r\n                                val => val == item.filter.operationMode\r\n                              )\r\n                                ? \"LightGray\"\r\n                                : \"\"\r\n                            }\r\n                            gpsValid={item.gpsValid}\r\n                            railProps={{ ...getRailProps() }}\r\n                          />*/\r\n                            (currentColor =\r\n                              basicFilter.bogie === 3\r\n                                ? item.cla\r\n                                : item.clr),\r\n                            (currentColor === \"green\" &&\r\n                              (currentColor = \"#0CA919\"),\r\n                            currentColor === \"yellow\" &&\r\n                              (currentColor = \"#FFD800\"),\r\n                            currentColor === \"red\" &&\r\n                              (currentColor = \"#F03040\"),\r\n                            currentColor === \"gray\" &&\r\n                              (currentColor = \"#545454\")),\r\n                            (operation =\r\n                              basicFilter.operation &&\r\n                              !basicFilter.operation.find(\r\n                                val => val == item.ftr.opm\r\n                              )\r\n                                ? \"LightGray\"\r\n                                : \"\"),\r\n                            (operation != \"\" || item.gvd === 0) &&\r\n                              (currentColor = \"LightGray\"),\r\n                            (\r\n                              <div\r\n                                style={{\r\n                                  width: colorArea + \"%\",\r\n                                  backgroundColor: \"#0C74DA\"\r\n                                    /*mapData.length > 300\r\n                                      ? \"LightGray\"\r\n                                      : currentColor*/\r\n                                }}\r\n                                className=\"railStyle\"\r\n                                id={mapData.length}\r\n                              />\r\n                            )\r\n                          )\r\n                        )}\r\n                      </div>\r\n                    );\r\n                  }}\r\n                </Rail>\r\n                <Handles>\r\n                  {({ handles, getHandleProps }) => (\r\n                    <div className=\"slider-handles\">\r\n                      {handles.map(handle => (\r\n                        <Handle\r\n                          key={handle.id}\r\n                          handle={handle}\r\n                          getHandleProps={getHandleProps}\r\n                          mapData={mapData}\r\n                          basicFilter={basicFilter}\r\n                          unit={unit}\r\n                        />\r\n                      ))}\r\n                    </div>\r\n                  )}\r\n                </Handles>\r\n              </Slider>\r\n            </div>\r\n          </Col>\r\n        </Row>\r\n      </Col>\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport \"./styles.scss\";\r\n\r\nconst FilterDetailsTrainview = ({ basicFilter, advancedFilter }) => {\r\n  let strOperation = \"Operation mode: \";\r\n  return (\r\n    <div className=\"filtersTitleTrainview\">\r\n      <span className=\"basicfilter\">{\"Basic filter\"}</span>\r\n\r\n      <span className=\"weathercondition\">\r\n        <img\r\n          src={require(\"../../../assets/images/wet.svg\")}\r\n          className={\"weatherconditionicon\"}\r\n        />\r\n        {\"Weather condition: \" + basicFilter.weather}\r\n      </span>\r\n\r\n      <span className=\"operationmode\">\r\n        <img\r\n          src={require(\"../../../assets/images/magnet.svg\")}\r\n          className={\"operationmodeicon\"}\r\n        />\r\n        {basicFilter.operation &&\r\n          basicFilter.operation.sort().map((item) => {\r\n            if (item === 1) {\r\n              strOperation += \"Pulling, cabin 1 in front; \";\r\n            }\r\n            if (item === 2) {\r\n              strOperation += \"Pulling, cabin 2 in front; \";\r\n            }\r\n            if (item === 3) {\r\n              strOperation += \"Pushing, cabin 1 in front; \";\r\n            }\r\n            if (item === 4) {\r\n              strOperation += \"Pushing, cabin 2 in front; \";\r\n            }\r\n            if (item === 5) {\r\n              strOperation += \"Standstill; \";\r\n            }\r\n          })}\r\n        {basicFilter.operation && basicFilter.operation.length === 6\r\n          ? (strOperation = \"Operation mode: All \")\r\n          : strOperation}\r\n      </span>\r\n\r\n      <span className=\"bogie\">\r\n        <img\r\n          src={require(\"../../../assets/images/generator.svg\")}\r\n          className={\"bogieicon\"}\r\n        />\r\n        {basicFilter.bogie &&\r\n         basicFilter.bogie === 1\r\n         ? (\"Bogie: 1\")\r\n         : basicFilter.bogie === 2\r\n         ? (\"Bogie: 2\")\r\n         : (\"Bogie: All\")}\r\n      </span>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FilterDetailsTrainview;\r\n","//Library\r\nimport React, { Component, Fragment } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport Tabs from \"react-bootstrap/Tabs\";\r\nimport Tab from \"react-bootstrap/Tab\";\r\nimport { injectIntl, FormattedMessage } from \"react-intl\";\r\nimport html2canvas from \"html2canvas\";\r\nimport jsPDF from \"jspdf\";\r\n//Components\r\nimport \"../styles.scss\";\r\nimport messages from \"../messages\";\r\nimport TrainViewMap from \"../../../components/TrainViewMap\";\r\nimport Graph from \"../../../components/Graph\";\r\nimport TitleBar from \"../../../components/Title/TitleBar\";\r\nimport DistanceSelector from \"../../../components/DistanceSelector\";\r\nimport {\r\n  IconTimeTrend,\r\n  IconScatterPlot,\r\n  IconHistogram,\r\n  IconGps,\r\n} from \"../../../components/Icons\";\r\nimport Loading from \"../../../components/Loading\";\r\nimport FilterDetailsTrainview from \"../../../components/Title/FilterDetailsTrainview\";\r\n\r\nclass TrainView extends Component {\r\n  constructor(props, context) {\r\n    super(props, context);\r\n    this.state = {\r\n      key: \"Slip\",\r\n      markerPosition: {\r\n        lat: 0.0,\r\n        lng: 0.0,\r\n      },\r\n      crosshairPosition: null,\r\n    };\r\n    this.child = React.createRef();\r\n  }\r\n\r\n  componentDidMount() {\r\n    /*this.props.mapData &&\r\n      this.props.mapData.data.length !== 0 &&\r\n      this.setState({\r\n        markerPosition: this.props.mapData.data[0].positions[1]\r\n      });*/\r\n  }\r\n\r\n  componentWillReceiveProps(nextProps) {\r\n    if (\r\n      this.props.startDate !== nextProps.startDate ||\r\n      this.props.endDate !== nextProps.endDate ||\r\n      this.props.selectedTrain !== nextProps.selectedTrain ||\r\n      this.props.selectedMainTrend !== nextProps.selectedMainTrend\r\n    ) {\r\n      this.setState({\r\n        markerPosition: {\r\n          lat: 0.0,\r\n          lng: 0.0,\r\n        },\r\n      });\r\n    }\r\n  }\r\n  // shouldComponentUpdate(nextProps) {\r\n  //   if (this.state.markerPosition.lat === 0) return true;\r\n  //   else return false;\r\n  // }\r\n\r\n  // componentDidUpdate() {\r\n  //   this.props.mapData &&\r\n  //     this.setState({\r\n  //       markerPosition: this.props.mapData[0].positions[1]\r\n  //     });\r\n  // }\r\n\r\n  /*onUpdate = ([position]) => {\r\n    let filterValue = this.props.mapData.filter(\r\n      item => item.timeStamp == position\r\n    );\r\n    this.setState({\r\n      markerPosition: filterValue[0].positions[0],\r\n      crosshairPosition: this.props.mapData.indexOf(filterValue[0])\r\n    });\r\n    this.child.current.showTooltip(this.state.crosshairPosition);\r\n  };*/\r\n\r\n  onUpdate = ([position]) => {\r\n    let filterValue = this.props.mapSliderData[position];\r\n    if (filterValue !== undefined) {\r\n      if (\r\n        filterValue.pos[0].lat >= 1 &&\r\n        filterValue.pos[1].lat >= 1 &&\r\n        filterValue.gvd === 1\r\n      ) {\r\n        this.setState({\r\n          markerPosition: filterValue.pos[1],\r\n          //crosshairPosition: this.props.mapData.indexOf(position)\r\n        });\r\n      }\r\n      if (position === 0 && filterValue.gvd === 1) {\r\n        this.setState({\r\n          markerPosition: filterValue.pos[1],\r\n        });\r\n      }\r\n\r\n      this.child.current.showTooltip(position);\r\n      //console.log(\"markerPosition\",this.state.markerPosition);\r\n    }\r\n  };\r\n\r\n  saveAs = (uri, filename) => {\r\n    var link = document.createElement(\"a\");\r\n\r\n    if (typeof link.download === \"string\") {\r\n      link.href = uri;\r\n      link.download = filename;\r\n\r\n      //Firefox requires the link to be in the body\r\n      document.body.appendChild(link);\r\n\r\n      //simulate click\r\n      link.click();\r\n\r\n      //remove the link when done\r\n      document.body.removeChild(link);\r\n    } else {\r\n      window.open(uri);\r\n    }\r\n  };\r\n\r\n  takeScreenshot = () => {\r\n    let googleMapsView = document.querySelector(\"#multicolormap\");\r\n\r\n    html2canvas(googleMapsView, { useCORS: true }).then((canvas) => {\r\n      let imgData = canvas.toDataURL(\"image/png\");\r\n      imgData = imgData.replace(\"data:image/png;base64,\", \"\");\r\n      var finalImageSrc = \"data:image/png;base64,\" + imgData;\r\n      this.saveAs(canvas.toDataURL(), \"file-name.png\");\r\n      const pdf = new jsPDF();\r\n      pdf.addImage(finalImageSrc, \"PNG\", 0, 0);\r\n      pdf.save(\"Trainviewmap.pdf\");\r\n    });\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      mapData,\r\n      mapSliderData,\r\n      timeTrendData,\r\n      scatterplotData,\r\n      basicFilter,\r\n      selectedTrain,\r\n      onClickGraph,\r\n      histogramdata,\r\n    } = this.props;\r\n\r\n    return (\r\n      <div>\r\n        <Row>\r\n          <TitleBar\r\n            trainno={this.props.selectedTrain}\r\n            onClickRedirectMap={this.props.onClickRedirectMap}\r\n            id=\"trainview\"\r\n          />\r\n        </Row>\r\n        <Row>\r\n          <Col md={6} className=\"trainviewmaptitle\">\r\n            <IconGps />\r\n            <span className=\"\"> Map</span>\r\n          </Col>\r\n          <Col md={3} className=\"ml-auto noRightpadding mapRedirect\">\r\n            {/* <button\r\n              title=\"Download map\"\r\n              onClick={\r\n                () => {\r\n                  // remove this function to enable download\r\n                } //this.takeScreenshot\r\n              }\r\n              className=\"iconbtn\"\r\n            >\r\n              <img src={require(\"../../../assets/images/exportChart.svg\")} />\r\n            </button> */}\r\n          </Col>\r\n        </Row>\r\n        <Row>\r\n          <Col md={12}>\r\n          <FilterDetailsTrainview basicFilter={this.props.basicFilter}/>\r\n          </Col>\r\n        </Row>\r\n        <Row>\r\n          <Col md={12} className=\"tabtrainview\">\r\n            {this.props.mapData === null ||\r\n            this.props.mapData === undefined ||\r\n            this.props.loadingMap === true ? (\r\n              <Col md={12}>\r\n                <Loading />\r\n              </Col>\r\n            ) : (\r\n              <TrainViewMap\r\n                mapData={mapData.rns}\r\n                markerPosition={this.state.markerPosition}\r\n                basicFilter={basicFilter}\r\n              />\r\n            )}\r\n            {/*<Tabs\r\n              id=\"controlled-tab\"\r\n              activeKey={this.props.selectedMainTrend} //{this.state.key}\r\n              onSelect={key => this.props.onClickTab(key)} //{key => this.setState({ key })}\r\n            >\r\n              {// Slip tab \r\n              }\r\n              <Tab\r\n                eventKey=\"Slip\"\r\n                title={<span className=\"tabtitle\">Slip</span>}\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.mapData === undefined ||\r\n                this.props.loadingMap === true ||\r\n                this.props.selectedTab === \"Slip\" ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n              {// Effort tab \r\n              }\r\n              <Tab\r\n                eventKey=\"Effort\"\r\n                title={<span className=\"tabtitle\">Effort</span>}\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.mapData === undefined ||\r\n                this.props.loadingMap === true ||\r\n                this.props.selectedTab === \"Effort\" ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n              {// Effort Driving tab \r\n              }\r\n              <Tab\r\n                eventKey=\"EffortDriving\"\r\n                title={<span className=\"tabtitle\">Effort Driving</span>}\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.mapData === undefined ||\r\n                this.props.loadingMap === true ||\r\n                this.props.selectedTab === \"Speed\" ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n              {// Effort Braking (electrical) tab \r\n              }\r\n              <Tab\r\n                eventKey=\"EffortBraking\"\r\n                title={\r\n                  <span className=\"tabtitle\">Effort Braking (electrical)</span>\r\n                }\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.mapData === undefined ||\r\n                this.props.loadingMap === true ||\r\n                this.props.selectedTab === \"EffortBraking\" ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n              {// Effort Braking (mechanical) tab \r\n              }\r\n              <Tab\r\n                eventKey=\"EffortBrakingMechanical\"\r\n                title={\r\n                  <span className=\"tabtitle\">Effort Braking (mechanical)</span>\r\n                }\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.mapData === undefined ||\r\n                this.props.loadingMap === true ||\r\n                this.props.selectedTab === \"EffortBrakingMechanical\" ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n              {// Speed tab \r\n              }\r\n              <Tab\r\n                eventKey=\"Speed\"\r\n                title={<span className=\"tabtitle\">Speed</span>}\r\n              >\r\n                {this.props.mapData === null ||\r\n                this.props.loadingMap === true ||\r\n                this.props.mapData === undefined ? (\r\n                  <Col md={12}>\r\n                    <Loading />\r\n                  </Col>\r\n                ) : (\r\n                  <TrainViewMap\r\n                    mapData={mapData.rns}\r\n                    markerPosition={this.state.markerPosition}\r\n                    basicFilter={basicFilter}\r\n                  />\r\n                )}\r\n              </Tab>\r\n                </Tabs>*/}\r\n          </Col>\r\n        </Row>\r\n        <Row>\r\n          {this.props.mapData === null ||\r\n          this.props.mapData === undefined ||\r\n          this.props.loadingMap === true ||\r\n          this.props.loadingTimetrend === true ? (\r\n            <Col md={12}></Col>\r\n          ) : this.props.mapSliderData.length !== 0 ? (\r\n            <DistanceSelector\r\n              mapData={mapSliderData}\r\n              onUpdate={this.onUpdate}\r\n              selectedTrain={selectedTrain}\r\n              basicFilter={basicFilter}\r\n              unit={this.props.mapData.cfg.unt}\r\n            />\r\n          ) : (\r\n            \"\"\r\n          )}\r\n        </Row>\r\n        <Row>\r\n          <Col md={12}>\r\n            <Row className=\"trainviewcharts\">\r\n              <Col md={4} className=\"trainviewchart\">\r\n                <span className=\"tabIcon\">\r\n                  <IconTimeTrend fill=\"\" />\r\n                  <span className=\"tabtitle\"> Time trend</span>\r\n                </span>\r\n                {this.props.timeTrendData === null ||\r\n                this.props.timeTrendData === undefined ||\r\n                this.props.timeTrendData === [] ||\r\n                this.props.loadingTimetrend === true ? (\r\n                  <Loading />\r\n                ) : this.props.timeTrendData.length !== 0 ? (\r\n                  <Graph\r\n                    className=\"trainviewchartgraph\"\r\n                    data={timeTrendData}\r\n                    selectedMainTrend={\"DrivingTrailerVel\"}\r\n                    selectedOverlaysTrend={[]}\r\n                    chartType={\"TREND_TYPE\"}\r\n                    onClick={onClickGraph}\r\n                    ref={this.child}\r\n                    basicFilter={basicFilter}\r\n                    crosshairPosition={this.state.crosshairPosition}\r\n                    loadingTimetrend={this.props.loadingTimetrend}\r\n                  />\r\n                ) : (\r\n                  <Col md={12} className=\"addMarginTop nodatafound\">\r\n                    <div> Sorry...</div>\r\n                    <div className=\"addMarginTop\">\r\n                      No data found for this time interval !\r\n                    </div>\r\n                  </Col>\r\n                )}\r\n              </Col>\r\n\r\n              <Col md={4} className=\"trainviewchart\">\r\n                <span className=\"tabIcon\">\r\n                  <IconScatterPlot />\r\n                  <span className=\"tabtitle\">Scatter plot</span>\r\n                </span>\r\n                {this.props.scatterplotData === null ||\r\n                this.props.scatterplotData === undefined ||\r\n                this.props.loadingScatter === true ||\r\n                this.props.loadingScatterB2 === true ? (\r\n                  <Loading />\r\n                ) : this.props.scatterplotData.length !== 0 ? (\r\n                  <Graph\r\n                    className=\"trainviewchartgraph\"\r\n                    data={scatterplotData}\r\n                    setMainScatterSignal={\"Speed/Effort\"}\r\n                    // selectedOverlaysTrend={[]}\r\n                    chartType={\"SCATTER_TYPE\"}\r\n                    onClick={onClickGraph}\r\n                    // basicFilter={basicFilter}\r\n                  />\r\n                ) : (\r\n                  <Col md={12} className=\"addMarginTop nodatafound\">\r\n                    <div> Sorry...</div>\r\n                    <div className=\"addMarginTop\">\r\n                      No data found for this time interval !\r\n                    </div>\r\n                  </Col>\r\n                )}\r\n              </Col>\r\n              <Col md={4} className=\"trainviewchart\">\r\n                <span className=\"tabIcon\">\r\n                  <IconHistogram />\r\n                  <span className=\"tabtitle\">Histogram</span>\r\n                </span>\r\n                {this.props.histogramdata === null ||\r\n                this.props.histogramdata === undefined ||\r\n                this.props.histogramdata === [] ? (\r\n                  <Loading />\r\n                ) : this.props.histogramdata.dat.length !== 0 ? (\r\n                  <Graph\r\n                    className=\"trainviewchartgraph\"\r\n                    data={histogramdata}\r\n                    chartType={\"HISTOGRAM_TYPE\"}\r\n                    onClick={onClickGraph}\r\n                  />\r\n                ) : (\r\n                  <Col md={12} className=\"addMarginTop nodatafound\">\r\n                    <div> Sorry...</div>\r\n                    <div className=\"addMarginTop\">\r\n                      No data found for this time interval !\r\n                    </div>\r\n                  </Col>\r\n                )}\r\n              </Col>\r\n            </Row>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nTrainView.defaultProps = {\r\n  selectedTrain: undefined,\r\n  startTime: undefined,\r\n  endTime: undefined,\r\n  startTimeDate: undefined,\r\n  endTimeDate: undefined,\r\n  graphsData: undefined,\r\n};\r\n\r\nTrainView.propTypes = {\r\n  selectedTrain: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n  startTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  endTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  graphsData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n};\r\n\r\nexport default withRouter(TrainView);\r\n","//Library\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { injectIntl, intlShape, FormattedMessage } from \"react-intl\";\r\nimport { createStructuredSelector } from \"reselect\";\r\nimport Moment from \"moment\";\r\n//Components\r\nimport \"./styles.scss\";\r\nimport messages from \"./messages\";\r\nimport TrainView from \"./TrainView\";\r\nimport Breadcrumb from \"../../components/Breadcrumb\";\r\nimport Datepicker from \"../../components/DatePicker\";\r\nimport SideMenu from \"../../components/SideMenu\";\r\nimport Loading from \"../../components/Loading\";\r\n//Actions\r\nimport {\r\n  setTab,\r\n  getTrainViewMap,\r\n  clearTrainViewMap,\r\n  getTrainViewHistogram,\r\n  clearTrainViewHistogram,\r\n} from \"./actions\";\r\nimport {\r\n  fetchMapData,\r\n  fetchTrainList,\r\n  setSelectedTrain,\r\n  setDate,\r\n} from \"../DashBoard/actions\";\r\nimport {\r\n  setBasicFilter,\r\n  setMainTrendSignal,\r\n  getDetailViewTimetrend,\r\n  setLoading,\r\n  setTimetrendLoading,\r\n  clearDetailViewMap,\r\n  clearDetailViewMapDateSlider,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n  getDetailViewScatterplot,\r\n  getDetailViewHistogram,\r\n  clearBasicFilter,\r\n} from \"../DetailTrainPage/actions\";\r\n//Selectors\r\nimport {\r\n  loadingSelector,\r\n  loadingMapSelector,\r\n  loadingTimetrendSelector,\r\n  filteredMapSelector,\r\n  filteredMapSliderSelector,\r\n  filteredTimetrendSelector,\r\n  scatterplotSelector,\r\n  selectedTabSelector,\r\n  timetrendSlip1Selector,\r\n  timetrendSlip2Selector,\r\n  timetrendSpeed1Selector,\r\n  timetrendSpeed2Selector,\r\n  timetrendEffort1Selector,\r\n  timetrendEffort2Selector,\r\n  timetrendEffortDriving1Selector,\r\n  timetrendEffortDriving2Selector,\r\n  timetrendEffortBraking1Selector,\r\n  timetrendEffortBraking2Selector,\r\n  timetrendEffortBrakingMech1Selector,\r\n  timetrendEffortBrakingMech2Selector,\r\n  ttDrivingTrailerVel1Selector,\r\n  mapSlip1Selector,\r\n  mapSlip2Selector,\r\n  mapSpeed1Selector,\r\n  mapSpeed2Selector,\r\n  mapEffort1Selector,\r\n  mapEffort2Selector,\r\n  mapEffortDriving1Selector,\r\n  mapEffortDriving2Selector,\r\n  mapEffortBraking1Selector,\r\n  mapEffortBraking2Selector,\r\n  mapEffortBrakingMech1Selector,\r\n  mapEffortBrakingMech2Selector,\r\n  mapDrivingTrailerVel1Selector,\r\n  loadingScatterSelector,\r\n  filteredScatterSelector,\r\n  loadingScatterB2Selector,\r\n  loadingHistogramSelector,\r\n  histogramSelector,\r\n} from \"./selectors\";\r\nimport {\r\n  startDateSelector,\r\n  endDateSelector,\r\n  selectedTrainSelector,\r\n  fleetDataSelector,\r\n} from \"../DashBoard/selectors\";\r\nimport {\r\n  basicFilterSelector,\r\n  selectedMainTrendSelector,\r\n  //histogramSelector,\r\n} from \"../DetailTrainPage/selectors\";\r\n\r\nlet xAxisSignalScatter = \"Speed\";\r\nlet yAxisSignalScatter = \"Slip\";\r\n\r\nclass TrainViewPage extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.props.selectedMainTrend == null &&\r\n      this.props.setMainTrendSignal(\"Speed Driving Trailer\");\r\n\r\n    this.props.basicFilter.operation == undefined &&\r\n      this.props.setBasicFilter({\r\n        weather: \"All\",\r\n        operation: [0, 1, 2, 3, 4, 5],\r\n        bogie: 1,\r\n      });\r\n\r\n    this.state = {\r\n      xAxisSignal: \"Speed\",\r\n      yAxisSignal: \"Effort\",\r\n      zAxisSignal: \"Occurrence\",\r\n    };\r\n  }\r\n\r\n  componentDidMount() {\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    if (this.props.trainList === null) {\r\n      this.props.fetchTrainList(startDate, endDate);\r\n    }\r\n    this.props.setLoading(true);\r\n    //this.onClickTab(this.props.selectedMainTrend);\r\n    this.callTimetrendMap(this.props.selectedMainTrend);\r\n    /*this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"1\"\r\n    );\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"2\"\r\n    );\r\n    this.props.getDetailViewHistogram(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      this.state.xAxisSignal,\r\n      this.state.yAxisSignal,\r\n      this.state.zAxisSignal\r\n    );*/\r\n  }\r\n\r\n  applyDateChange = async (start_Date, end_Date, trainSelect = true) => {\r\n    if (trainSelect)\r\n      if (\r\n        new Date(start_Date).valueOf() ==\r\n          new Date(this.props.startDate.replace(/%3A/g, \":\")).valueOf() &&\r\n        new Date(end_Date).valueOf() ==\r\n          new Date(this.props.endDate.replace(/%3A/g, \":\")).valueOf()\r\n      ) {\r\n        return false;\r\n      }\r\n    await this.props.setDate(start_Date, end_Date);\r\n\r\n    await this.props.clearTrainViewMap();\r\n    await this.props.clearTrainViewHistogram();\r\n    await this.props.clearDetailViewMap();\r\n    await this.props.clearDetailViewMapDateSlider();\r\n    await this.props.clearDetailViewTimetrend();\r\n    await this.props.clearDetailViewScatterplot();\r\n    await this.props.clearDetailViewHistogram();\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    this.props.fetchTrainList(startDate, endDate);\r\n\r\n    this.props.setLoading(true);\r\n    //this.onClickTab(this.props.selectedMainTrend);\r\n    this.callTimetrendMap(this.props.selectedMainTrend);\r\n    /*this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"1\"\r\n    );\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"2\"\r\n    );\r\n    this.props.getDetailViewHistogram(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      this.state.xAxisSignal,\r\n      this.state.yAxisSignal,\r\n      this.state.zAxisSignal\r\n    );*/\r\n  };\r\n\r\n  clearBasicFilter = () => {\r\n    this.props.clearBasicFilter();\r\n  };\r\n\r\n  onTrainSelect = async (e) => {\r\n    await this.props.setSelectedTrain(e.target.id);\r\n    let startDate = new Date(this.props.startDate.replace(/%3A/g, \":\")),\r\n      endDate = new Date(this.props.endDate.replace(/%3A/g, \":\"));\r\n\r\n    this.applyDateChange(startDate, endDate, false);\r\n  };\r\n\r\n  changeBasicFilter = (e) => {\r\n    let currentTargetValue = Number(e.currentTarget.value);\r\n    if (isNaN(currentTargetValue)) currentTargetValue = e.currentTarget.value;\r\n\r\n    if (e.target.type !== \"checkbox\") {\r\n      this.props.setBasicFilter({\r\n        ...this.props.basicFilter,\r\n        [e.target.name]: currentTargetValue,\r\n      });\r\n    } else if (e.target.type === \"checkbox\") {\r\n      if (e.target.name === \"operation\") {\r\n        if (e.currentTarget.checked) {\r\n          let operationValue = [currentTargetValue];\r\n\r\n          this.props.basicFilter.operation != null &&\r\n            operationValue.push(...this.props.basicFilter.operation);\r\n\r\n          this.props.setBasicFilter({\r\n            ...this.props.basicFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        } else if (!e.currentTarget.checked) {\r\n          let operationValue = [];\r\n\r\n          this.props.basicFilter.operation != null &&\r\n            (operationValue = this.props.basicFilter.operation);\r\n\r\n          var index = operationValue.indexOf(currentTargetValue);\r\n          index > -1 && operationValue.splice(index, 1);\r\n\r\n          this.props.setBasicFilter({\r\n            ...this.props.basicFilter,\r\n            [e.target.name]: operationValue,\r\n          });\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  onClickGraph = (tab) => {\r\n    this.props.setTab(tab);\r\n    this.props.history.push(\"/DetailTrainPage\");\r\n  };\r\n\r\n  onClickRedirectMap = () => {\r\n    this.props.setTab(\"MAP_TYPE\");\r\n    this.props.history.push(\"/DetailTrainPage\");\r\n  };\r\n\r\n  onClickTab = async (tab) => {\r\n    this.props.setMainTrendSignal(tab);\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    this.props.setTimetrendLoading(true);\r\n    //await this.props.clearTrainViewMap();\r\n    //await this.props.clearDetailViewTimetrend();\r\n\r\n    switch (tab) {\r\n      case \"Slip\":\r\n        this.props.mapSlip1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSlip2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendSlip1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendSlip2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Speed\":\r\n        this.props.mapSpeed1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSpeed2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendSpeed1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendSpeed2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Effort\":\r\n        this.props.mapEffort1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffort2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffort1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffort2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortDriving\":\r\n        this.props.mapEffortDriving1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortDriving2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortDriving1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortDriving2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortBraking\":\r\n        this.props.mapEffortBraking1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBraking2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortBraking1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortBraking2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortBrakingMechanical\":\r\n        this.props.mapEffortBrakingMech1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBrakingMech2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortBrakingMech1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortBrakingMech2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n    this.handleLoading();\r\n  };\r\n\r\n  callTimetrendMap = async (tab) => {\r\n    this.props.setMainTrendSignal(tab);\r\n\r\n    let startDate = this.props.startDate,\r\n      endDate = this.props.endDate;\r\n\r\n    this.props.setTimetrendLoading(true);\r\n    //await this.props.clearTrainViewMap();\r\n    if (sessionStorage.getItem(\"isTrendZoomed\") === \"true\")\r\n      await this.props.clearDetailViewTimetrend();\r\n\r\n    /*switch (tab) {\r\n      case \"Slip\":\r\n        this.props.mapSlip1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSlip2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendSlip1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendSlip2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Slip\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Speed\":\r\n        this.props.mapSpeed1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"1\"\r\n          );\r\n        this.props.mapSpeed2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendSpeed1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendSpeed2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Speed\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"Effort\":\r\n        this.props.mapEffort1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffort2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffort1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffort2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"Effort\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortDriving\":\r\n        this.props.mapEffortDriving1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortDriving2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortDriving1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortDriving2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortDriving\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortBraking\":\r\n        this.props.mapEffortBraking1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBraking2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortBraking1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortBraking2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBraking\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      case \"EffortBrakingMechanical\":\r\n        this.props.mapEffortBrakingMech1 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.mapEffortBrakingMech2 === null &&\r\n          this.props.getTrainViewMap(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n\r\n        this.props.timetrendEffortBrakingMech1 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"1\"\r\n          );\r\n        this.props.timetrendEffortBrakingMech2 === null &&\r\n          this.props.getDetailViewTimetrend(\r\n            this.props.selectedTrain,\r\n            startDate,\r\n            endDate,\r\n            \"EffortBrakingMechanical\",\r\n            \"2\"\r\n          );\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }*/\r\n    this.props.mapDrivingTrailerVel1 === null &&\r\n      this.props.getTrainViewMap(\r\n        this.props.selectedTrain,\r\n        startDate,\r\n        endDate,\r\n        \"DrivingTrailerVel\",\r\n        \"1\"\r\n      );\r\n\r\n    this.props.ttDrivingTrailerVel1 === null &&\r\n      this.props.getDetailViewTimetrend(\r\n        this.props.selectedTrain,\r\n        startDate,\r\n        endDate,\r\n        \"DrivingTrailerVel\",\r\n        \"1\"\r\n      );\r\n\r\n    this.handleLoading();\r\n\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"1\",\r\n      true\r\n    );\r\n\r\n    this.props.histogramdata === null &&\r\n      this.props.getTrainViewHistogram(\r\n        this.props.selectedTrain,\r\n        startDate,\r\n        endDate,\r\n        this.state.xAxisSignal,\r\n        this.state.yAxisSignal,\r\n        this.state.zAxisSignal\r\n      );\r\n\r\n    this.props.getDetailViewScatterplot(\r\n      this.props.selectedTrain,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignalScatter,\r\n      yAxisSignalScatter,\r\n      \"2\",\r\n      true\r\n    );\r\n  };\r\n\r\n  handleLoading = () => {\r\n    this.props.ttDrivingTrailerVel1 !== null &&\r\n      this.props.setTimetrendLoading(false);\r\n  };\r\n\r\n  render() {\r\n    const {\r\n      loadingTimetrend,\r\n      loadingMap,\r\n      startDate,\r\n      endDate,\r\n      selectedTrain,\r\n      mapData,\r\n      mapSliderData,\r\n      timeTrendData,\r\n      scatterplotData,\r\n      basicFilter,\r\n      selectedMainTrend,\r\n      selectedTab,\r\n      histogramdata,\r\n      loadingScatter,\r\n      filteredScatterData,\r\n    } = this.props;\r\n    this.handleLoading();\r\n    return (\r\n      <div>\r\n        <Breadcrumb\r\n          BreadcrumbIcon={\r\n            <img\r\n              src={require(\"../../assets/images/home.svg\")}\r\n              className={\"\"}\r\n              alt=\"Detail Train View\"\r\n            />\r\n          }\r\n          BreadcrumbPath={<FormattedMessage {...messages.header} />}\r\n          NumberofTrains={this.props.trainList && this.props.trainList.length}\r\n        />\r\n        <Row>\r\n          <Col md={12} className=\"addMarginTop\">\r\n            <Datepicker\r\n              onApplyClick={this.applyDateChange}\r\n              startDate={startDate}\r\n              endDate={endDate}\r\n            />\r\n          </Col>\r\n        </Row>\r\n        <Row className=\"addMarginTop\">\r\n          <Col md={3} className=\"sideMenucon\">\r\n            <SideMenu\r\n              onChange={this.changeBasicFilter}\r\n              clearBasicFilter={this.clearBasicFilter}\r\n              onTrainSelect={this.onTrainSelect}\r\n              advanceFilter={false}\r\n              trainno={selectedTrain}\r\n              basicFilter={basicFilter}\r\n              trainList={this.props.trainList}\r\n            />\r\n          </Col>\r\n          <Col md={9} className=\"detailViewRightinner\">\r\n            <TrainView\r\n              mapData={mapData}\r\n              mapSliderData={mapSliderData}\r\n              loadingTimetrend={loadingTimetrend}\r\n              loadingMap={loadingMap}\r\n              timeTrendData={timeTrendData}\r\n              loadingScatter={loadingScatter}\r\n              scatterplotData={filteredScatterData}\r\n              selectedTrain={selectedTrain}\r\n              basicFilter={basicFilter}\r\n              selectedMainTrend={selectedMainTrend}\r\n              onClickGraph={this.onClickGraph}\r\n              selectedTab={selectedTab}\r\n              onClickTab={this.onClickTab}\r\n              histogramdata={histogramdata}\r\n              loadingScatterB2={this.props.loadingScatterB2}\r\n              startDate={startDate}\r\n              endDate={endDate}\r\n              onClickRedirectMap={this.onClickRedirectMap}\r\n            />\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nTrainViewPage.defaultProps = {\r\n  selectedTrain: undefined,\r\n  basicFilter: undefined,\r\n  startTime: undefined,\r\n  endTime: undefined,\r\n  startTimeDate: undefined,\r\n  endTimeDate: undefined,\r\n  graphsData: undefined,\r\n};\r\n\r\nTrainViewPage.propTypes = {\r\n  selectedTrain: PropTypes.object,\r\n  basicFilter: PropTypes.object,\r\n  startTime: PropTypes.string,\r\n  endTime: PropTypes.string,\r\n  startTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  endTimeDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n  graphsData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n  setBasicFilter: PropTypes.func,\r\n};\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n  loadingTimetrend: loadingTimetrendSelector(),\r\n  loadingMap: loadingMapSelector(),\r\n  startDate: startDateSelector(),\r\n  endDate: endDateSelector(),\r\n  mapData: filteredMapSelector(),\r\n  mapSliderData: filteredMapSliderSelector(),\r\n  timeTrendData: filteredTimetrendSelector(),\r\n  scatterplotData: scatterplotSelector(),\r\n  selectedTrain: selectedTrainSelector(),\r\n  basicFilter: basicFilterSelector(),\r\n  selectedMainTrend: selectedMainTrendSelector(),\r\n  selectedTab: selectedTabSelector(),\r\n  timetrendSlip1: timetrendSlip1Selector(),\r\n  timetrendSlip2: timetrendSlip2Selector(),\r\n  timetrendSpeed1: timetrendSpeed1Selector(),\r\n  timetrendSpeed2: timetrendSpeed2Selector(),\r\n  timetrendEffort1: timetrendEffort1Selector(),\r\n  timetrendEffort2: timetrendEffort2Selector(),\r\n  timetrendEffortDriving1: timetrendEffortDriving1Selector(),\r\n  timetrendEffortDriving2: timetrendEffortDriving2Selector(),\r\n  timetrendEffortBraking1: timetrendEffortBraking1Selector(),\r\n  timetrendEffortBraking2: timetrendEffortBraking2Selector(),\r\n  timetrendEffortBrakingMech1: timetrendEffortBrakingMech1Selector(),\r\n  timetrendEffortBrakingMech2: timetrendEffortBrakingMech2Selector(),\r\n  ttDrivingTrailerVel1: ttDrivingTrailerVel1Selector(),\r\n  mapSlip1: mapSlip1Selector(),\r\n  mapSlip2: mapSlip2Selector(),\r\n  mapSpeed1: mapSpeed1Selector(),\r\n  mapSpeed2: mapSpeed2Selector(),\r\n  mapEffort1: mapEffort1Selector(),\r\n  mapEffort2: mapEffort2Selector(),\r\n  mapEffortDriving1: mapEffortDriving1Selector(),\r\n  mapEffortDriving2: mapEffortDriving2Selector(),\r\n  mapEffortBraking1: mapEffortBraking1Selector(),\r\n  mapEffortBraking2: mapEffortBraking2Selector(),\r\n  mapEffortBrakingMech1: mapEffortBrakingMech1Selector(),\r\n  mapEffortBrakingMech2: mapEffortBrakingMech2Selector(),\r\n  mapDrivingTrailerVel1: mapDrivingTrailerVel1Selector(),\r\n  histogramdata: histogramSelector(),\r\n  loadingScatter: loadingScatterSelector(),\r\n  filteredScatterData: filteredScatterSelector(),\r\n  trainList: fleetDataSelector(),\r\n  loadingScatterB2: loadingScatterB2Selector(),\r\n  loadingHistogram: loadingHistogramSelector(),\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n  getMapData: fetchMapData,\r\n  setDate,\r\n  setSelectedTrain,\r\n  setBasicFilter,\r\n  setMainTrendSignal,\r\n  setTab,\r\n  getTrainViewMap,\r\n  getTrainViewHistogram,\r\n  getDetailViewTimetrend,\r\n  setLoading,\r\n  getDetailViewHistogram,\r\n  getDetailViewScatterplot,\r\n  setTimetrendLoading,\r\n  fetchTrainList,\r\n  clearDetailViewMap,\r\n  clearDetailViewMapDateSlider,\r\n  clearTrainViewMap,\r\n  clearTrainViewHistogram,\r\n  clearDetailViewTimetrend,\r\n  clearDetailViewScatterplot,\r\n  clearDetailViewHistogram,\r\n  clearBasicFilter,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TrainViewPage);\r\n","import { createSelector } from \"reselect\";\r\n\r\nconst loginresponce = () => state => state.get(\"loginData\");\r\n\r\nconst loadingSelector = () =>\r\n  createSelector(\r\n    loginresponce(),\r\n    state => state.get(\"loading\")\r\n  );\r\n\r\nconst loginresponceSelector = () =>\r\n  createSelector(\r\n    loginresponce(),\r\n    state => state.get(\"loginresponce\")\r\n  );\r\n\r\nconst logincheckSelector = () =>\r\n  createSelector(\r\n    loginresponce(),\r\n    state => state.get(\"isloggedIn\")\r\n  );\r\n\r\n// change password\r\nconst loadingchangepassSelector = () =>\r\n  createSelector(\r\n    loginresponce(),\r\n    state => state.get(\"loadingchangepass\")\r\n  );\r\n\r\nconst changepassresponceSelector = () =>\r\n  createSelector(\r\n    loginresponce(),\r\n    state => state.get(\"changepassresponce\")\r\n  );\r\n\r\nexport {\r\n  loadingSelector,\r\n  loginresponceSelector,\r\n  logincheckSelector,\r\n  loadingchangepassSelector,\r\n  changepassresponceSelector\r\n};\r\n","import React from \"react\";\r\nimport \"./styles.scss\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport { Col, Row, Button } from \"react-bootstrap\";\r\nimport Loading from \"../../components/Loading\";\r\n\r\nexport default class LoginForm extends React.Component {\r\n  render() {\r\n    return (\r\n      <Row className=\"loginbackground\">\r\n        <Col md={6}>\r\n          <div className=\"abblogoinlogin\">\r\n            <img\r\n              src={require(\"../../assets/images/abb-logo.svg\")}\r\n              alt=\"ABB Logo\"\r\n            />\r\n          </div>\r\n          <div className=\"wwotext\">Wheel Wear Monitoring</div>\r\n        </Col>\r\n        <Col md={6} className=\"loginfromcontainer\">\r\n          {this.props.loginResponce &&\r\n          this.props.loginResponce.userValid === false ? (\r\n            <div className=\"error-message\">\r\n              {this.props.loginResponce.responseMessage}\r\n            </div>\r\n          ) : (\r\n            \"\"\r\n          )}\r\n          <Form className=\"loginform\">\r\n            {/* <Form.Group controlId=\"exampleForm.ControlSelect1\">\r\n              <Form.Label>Role</Form.Label>\r\n              <Form.Control as=\"select\">\r\n                <option>Engineer</option>\r\n                <option>Manager</option>\r\n              </Form.Control>\r\n            </Form.Group> */}\r\n            <div className=\"userpasscontainer\">\r\n              <Form.Group controlId=\"username\">\r\n                <Form.Label>Username</Form.Label>\r\n                <Form.Control\r\n                  type=\"text\"\r\n                  name=\"username\"\r\n                  onChange={this.props.handleInputChange}\r\n                  autoComplete=\"off\"\r\n                  value={this.props.formValues.username}\r\n                  autoFocus={true}\r\n                  onKeyPress={this.props.handleKeyPress}\r\n                />\r\n                <div className=\"error-message\">{this.props.userNameError}</div>\r\n              </Form.Group>\r\n\r\n              <Form.Group controlId=\"password\">\r\n                <Form.Label>Password</Form.Label>\r\n                <Form.Control\r\n                  type=\"password\"\r\n                  name=\"password\"\r\n                  onChange={this.props.handleInputChange}\r\n                  autoComplete=\"off\"\r\n                  value={this.props.formValues.password}\r\n                  onKeyPress={this.props.handleKeyPress}\r\n                />\r\n                <div className=\"error-message\">{this.props.passwordError}</div>\r\n              </Form.Group>\r\n            </div>\r\n            {/* <Form.Group controlId=\"rememberme\">\r\n              <Form.Check type=\"checkbox\" label=\"Remember password\" />\r\n            </Form.Group> */}\r\n\r\n            <Button\r\n              className=\"smallButton\"\r\n              variant=\"primary\"\r\n              size=\"lg\"\r\n              onClick={this.props.handleLoginClick}\r\n            >\r\n              {this.props.loading ? \"Validating...\" : \" Log in\"}\r\n            </Button>\r\n          </Form>\r\n        </Col>\r\n        <Col md={12} className=\"rightstext\">\r\n          All rights reserved {new Date().getFullYear()}\r\n        </Col>\r\n      </Row>\r\n    );\r\n  }\r\n}\r\n","export const LOGIN = \"LOGIN\";\r\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\r\nexport const LOGIN_FAILURE = \"LOGIN_FAILURE\";\r\nexport const LOGGEDIN = \"LOGGEDIN\";\r\n\r\n//  for change password\r\n\r\nexport const CHANGEPASSWORD = \"CHANGEPASSWORD\";\r\nexport const CHANGEPASSWORD_SUCCESS = \"CHANGEPASSWORD_SUCCESS\";\r\nexport const CHANGEPASSWORD_FAILURE = \"CHANGEPASSWORD_FAILURE\";\r\n","import {\r\n  LOGIN,\r\n  LOGIN_SUCCESS,\r\n  LOGIN_FAILURE,\r\n  LOGGEDIN,\r\n  CHANGEPASSWORD,\r\n  CHANGEPASSWORD_SUCCESS,\r\n  CHANGEPASSWORD_FAILURE\r\n} from \"./constants\";\r\n\r\n//Login\r\nexport const logIn = (username, password) => ({\r\n  type: LOGIN,\r\n  payload: { username, password }\r\n});\r\n\r\nexport const logInSucess = loginresponce => ({\r\n  type: LOGIN_SUCCESS,\r\n  loginresponce\r\n});\r\n\r\nexport const logInFailure = error => ({\r\n  type: LOGIN_FAILURE,\r\n  error\r\n});\r\n\r\nexport const loggedIn = isloggedIn => ({\r\n  type: LOGGEDIN,\r\n  isloggedIn: isloggedIn\r\n});\r\n\r\n//  for change password\r\n\r\nexport const changePassword = (userName, oldpassword, newpassword) => ({\r\n  type: CHANGEPASSWORD,\r\n  payload: { userName, oldpassword, newpassword }\r\n});\r\n\r\nexport const changePassSucess = changepassresponce => ({\r\n  type: CHANGEPASSWORD_SUCCESS,\r\n  changepassresponce\r\n});\r\n\r\nexport const changePassFailure = error => ({\r\n  type: CHANGEPASSWORD_FAILURE,\r\n  error\r\n});\r\n","//Library\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport { createStructuredSelector } from \"reselect\";\r\n// import CryptoJS from \"crypto-js/crypto-js.js\";\r\nimport { AESEncrypt, SessionStoragedecrypt } from \"./aes-encryption\";\r\nimport {\r\n  loadingSelector,\r\n  loginresponceSelector,\r\n  logincheckSelector\r\n} from \"./selectors\";\r\nimport LoginForm from \"../../components/Login\";\r\nimport { logIn, loggedIn } from \"./actions\";\r\n\r\nclass LoginPage extends React.Component {\r\n  constructor(...args) {\r\n    super(...args);\r\n    this.state = {\r\n      username: \"\",\r\n      password: \"\",\r\n      userNameError: \"\",\r\n      passwordError: \"\"\r\n    };\r\n  }\r\n  componentDidUpdate() {\r\n    if (\r\n      this.props.loginResponce != undefined &&\r\n      this.props.loginResponce.userValid === true\r\n    ) {\r\n      this.props.loggedIn(true);\r\n      this.props.history.push(\"/Dashboard\");\r\n      sessionStorage.setItem(\"token\", AESEncrypt(true));\r\n      sessionStorage.setItem(\"givenname\", this.props.loginResponce.userName);\r\n    }\r\n  }\r\n\r\n  handleLoginClick = () => {\r\n    const regexp = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n    const isValidEmail = regexp.test(this.state.username.trim());\r\n\r\n    if (this.state.username === \"\") {\r\n      this.setState({\r\n        userNameError: \"User name  is required\",\r\n        passwordError: \"\"\r\n      });\r\n    } else if (isValidEmail !== true) {\r\n      this.setState({\r\n        userNameError: \"Please enter a valid email address\",\r\n        passwordError: \"\"\r\n      });\r\n    } else if (this.state.password === \"\") {\r\n      this.setState({\r\n        userNameError: \"\",\r\n        passwordError: \"Password is required\"\r\n      });\r\n    } else {\r\n      this.props.logIn(\r\n        this.state.username.trim(),\r\n        AESEncrypt(this.state.password)\r\n      ); //  enable it to send encrypted password\r\n      // this.props.logIn(this.state.username, this.state.password);\r\n\r\n      this.setState({\r\n        // username: \"\",\r\n        password: \"\",\r\n        userNameError: \"\",\r\n        passwordError: \"\"\r\n      });\r\n    }\r\n  };\r\n\r\n  handleInputChange = e => {\r\n    if (e !== undefined) {\r\n      this.setState({\r\n        [e.target.name]: e.target.value\r\n      });\r\n    }\r\n  };\r\n\r\n  handleKeyPress = e => {\r\n    if (e.key === \"Enter\") {\r\n      this.handleLoginClick();\r\n    }\r\n  };\r\n\r\n  render() {\r\n    console.log(\"checking login in render\");\r\n    if (SessionStoragedecrypt(sessionStorage.getItem(\"token\")) == \"true\") {\r\n      this.props.history.push(\"/Dashboard\");\r\n    }\r\n    // if (\r\n    //   this.props.loginResponce != undefined &&\r\n    //   this.props.loginResponce === true\r\n    // ) {\r\n    //   sessionStorage.setItem(\"isValidUser\", true);\r\n    //   this.props.history.push(\"/Dashboard\");\r\n    // }\r\n\r\n    return (\r\n      <div className=\"loginpage\">\r\n        <LoginForm\r\n          handleLoginClick={this.handleLoginClick}\r\n          handleInputChange={this.handleInputChange}\r\n          loginResponce={this.props.loginResponce}\r\n          loading={this.props.loading}\r\n          userNameError={this.state.userNameError}\r\n          passwordError={this.state.passwordError}\r\n          formValues={this.state}\r\n          handleKeyPress={this.handleKeyPress}\r\n        />\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n  loading: loadingSelector(),\r\n  loginResponce: loginresponceSelector(),\r\n  logincheck: logincheckSelector()\r\n});\r\nconst mapDispatchToProps = {\r\n  logIn: logIn,\r\n  loggedIn: loggedIn\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginPage);\r\n","import React from \"react\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport { Nav, Col, Button } from \"react-bootstrap\";\r\nimport Navbar from \"react-bootstrap/Navbar\";\r\nimport \"./Header.scss\";\r\n\r\nclass Header extends React.Component {\r\n  constructor(...args) {\r\n    super(...args);\r\n    this.textInput = React.createRef();\r\n  }\r\n\r\n  openModal = () => {\r\n    this.props.showChangePasswordmodal(true);\r\n    setTimeout(() => {\r\n      this.textInput.current.focus();\r\n    }, 1);\r\n  };\r\n\r\n  render() {\r\n    return (\r\n      <React.Fragment>\r\n        <Modal\r\n          autoFocus={false}\r\n          enforceFocus={false}\r\n          show={this.props.showmodal}\r\n          onHide={() => this.props.showChangePasswordmodal(false)}\r\n          className=\"changepasscontainer\"\r\n          centered\r\n        >\r\n          <Form className=\"changepassform\">\r\n            <Modal.Header closeButton>\r\n              <Modal.Title>Change Password</Modal.Title>\r\n            </Modal.Header>\r\n            <Modal.Body>\r\n              {this.props.changePassResponce ? (\r\n                <div\r\n                  className={\r\n                    this.props.changePassResponce.responseMessage ===\r\n                    \"Password updated sucessfully.\"\r\n                      ? \"sucess-message\"\r\n                      : \"error-message\"\r\n                  }\r\n                >\r\n                  {this.props.apiResponseMessage}\r\n                </div>\r\n              ) : (\r\n                \"\"\r\n              )}\r\n\r\n              <Form.Group controlId=\"currentpass\">\r\n                <Form.Label>Current password</Form.Label>\r\n                <Form.Control\r\n                  type=\"password\"\r\n                  name=\"currentpass\"\r\n                  onChange={this.props.handleInputChange}\r\n                  autoComplete=\"off\"\r\n                  autoFocus={true}\r\n                  value={this.props.formValues.currentpass}\r\n                  onKeyPress={this.props.handleKeyPress}\r\n                  ref={this.textInput}\r\n                />\r\n                <div className=\"error-message\">\r\n                  {this.props.currentPassError}\r\n                </div>\r\n              </Form.Group>\r\n\r\n              <Form.Group controlId=\"newpassword\">\r\n                <Form.Label>New password</Form.Label>\r\n                <Form.Control\r\n                  type=\"password\"\r\n                  name=\"newpassword\"\r\n                  onChange={this.props.handleInputChange}\r\n                  autoComplete=\"off\"\r\n                  value={this.props.formValues.newpassword}\r\n                  maxLength={30}\r\n                  onKeyPress={this.props.handleKeyPress}\r\n                />\r\n                <div className=\"error-message\">{this.props.newPassError}</div>\r\n              </Form.Group>\r\n              <Form.Group controlId=\"repeatpassword\">\r\n                <Form.Label>Repeat new password</Form.Label>\r\n                <Form.Control\r\n                  type=\"password\"\r\n                  name=\"repeatepass\"\r\n                  onChange={this.props.handleInputChange}\r\n                  autoComplete=\"off\"\r\n                  value={this.props.formValues.repeatepass}\r\n                  maxLength={30}\r\n                  onKeyPress={this.props.handleKeyPress}\r\n                />\r\n                <div className=\"error-message\">\r\n                  {this.props.repeatenewPassError}\r\n                </div>\r\n              </Form.Group>\r\n            </Modal.Body>\r\n            <Modal.Footer>\r\n              <Button\r\n                className=\"smallButton cancel\"\r\n                variant=\"secondary\"\r\n                size=\"lg\"\r\n                onClick={() => this.props.showChangePasswordmodal(false)}\r\n              >\r\n                {this.props.changePassResponce &&\r\n                this.props.apiResponseMessage ===\r\n                  \"Password updated sucessfully.\"\r\n                  ? \"Close\"\r\n                  : \"Cancel\"}\r\n              </Button>\r\n              <Button\r\n                className=\"smallButton\"\r\n                variant=\"primary\"\r\n                size=\"lg\"\r\n                onClick={() => this.props.changePasswordClick()}\r\n              >\r\n                {this.props.loading ? \"Saving...\" : \" Save\"}\r\n              </Button>\r\n            </Modal.Footer>\r\n          </Form>\r\n        </Modal>\r\n\r\n        <Navbar collapseOnSelect fixed=\"top\" expand=\"lg\">\r\n          <Navbar.Brand onClick={this.props.redirectToHome}>\r\n            <Col className=\"nav-logo\" md={12}>\r\n              <div>\r\n                <p className=\"red-mark\" />\r\n                <p className=\"site-name\">Wheel Wear Monitoring</p>\r\n              </div>\r\n            </Col>\r\n          </Navbar.Brand>\r\n          <Navbar.Toggle aria-controls=\"responsive-navbar-nav\" />\r\n          <Navbar.Collapse id=\"responsive-navbar-nav\">\r\n            <Nav className=\"ml-auto\">\r\n              <Nav.Item>\r\n                <Nav.Link className=\"not-active\">\r\n                  <img\r\n                    src={require(\"../../assets/images/feedback.svg\")}\r\n                    className={\"\"}\r\n                    alt=\"Feedback\"\r\n                  />\r\n                  &nbsp; Feedback\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n              <Nav.Item>\r\n                <Nav.Link className=\"not-active\">\r\n                  <img\r\n                    src={require(\"../../assets/images/help.svg\")}\r\n                    className={\"\"}\r\n                    alt=\"Help\"\r\n                  />\r\n                  &nbsp; Help\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n              <Nav.Item>\r\n                <Nav.Link className=\"not-active\">\r\n                  <img\r\n                    src={require(\"../../assets/images/goToLink.svg\")}\r\n                    className={\"\"}\r\n                    alt=\"My ABB\"\r\n                  />\r\n                  &nbsp; My ABB\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n              <Nav.Item>\r\n                <Nav.Link>\r\n                  <img\r\n                    src={require(\"../../assets/images/user.svg\")}\r\n                    className={\"\"}\r\n                    alt=\"Admin\"\r\n                  />\r\n                  &nbsp;\r\n                  <span\r\n                    className=\"username\"\r\n                    title=\"Change Password\"\r\n                    // onClick={() => this.props.showChangePasswordmodal(true)}\r\n                    onClick={this.openModal}\r\n                  >\r\n                    {this.props.loginResponce != undefined\r\n                      ? this.props.loginResponce.userName\r\n                      : sessionStorage.getItem(\"givenname\") !== null\r\n                      ? sessionStorage.getItem(\"givenname\")\r\n                      : \"Not logged in\"}\r\n                  </span>\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n              <Nav.Item>\r\n                <Nav.Link className=\"not-active\">\r\n                  <select\r\n                    className=\"languageSelection\"\r\n                    id=\"language\"\r\n                    name=\"language\"\r\n                  >\r\n                    <option>EN</option>\r\n                    <option>FR</option>\r\n                    <option>CH</option>\r\n                    <option>DH</option>\r\n                  </select>\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n              <Nav.Item>\r\n                <Nav.Link>\r\n                  <img\r\n                    src={require(\"../../assets/images/logout.svg\")}\r\n                    className={\"\"}\r\n                    alt=\"Logout\"\r\n                    onClick={this.props.handleLogoutClick}\r\n                  />\r\n                </Nav.Link>\r\n              </Nav.Item>\r\n            </Nav>\r\n          </Navbar.Collapse>\r\n        </Navbar>\r\n      </React.Fragment>\r\n    );\r\n  }\r\n}\r\n\r\nexport default Header;\r\n","//Library\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { createStructuredSelector } from \"reselect\";\r\nimport {\r\n  loadingSelector,\r\n  loginresponceSelector,\r\n  logincheckSelector,\r\n  loadingchangepassSelector,\r\n  changepassresponceSelector\r\n} from \"../Login/selectors\";\r\nimport Header from \"../../components/Header/Header\";\r\nimport { loggedIn, changePassword } from \"../Login/actions\";\r\nimport { AESEncrypt } from \"../Login/aes-encryption\";\r\n\r\nclass HeaderPage extends React.Component {\r\n  constructor(...args) {\r\n    super(...args);\r\n    this.state = {\r\n      showmodal: false,\r\n      currentpass: \"\",\r\n      newpassword: \"\",\r\n      repeatepass: \"\",\r\n      currentPassError: \"\",\r\n      newPassError: \"\",\r\n      repeatenewPassError: \"\",\r\n      apiResponseMessage: \"\",\r\n      changePassRemainder: 0\r\n    };\r\n  }\r\n\r\n  // componentDidMount() {\r\n  //   if (\r\n  //     this.props.loginResponce != undefined &&\r\n  //     this.props.loginResponce.isFirstTimeLogin === true\r\n  //   ) {\r\n  //     alert();\r\n  //     this.setState({\r\n  //       showmodal: true\r\n  //     });\r\n  //   }\r\n  // }\r\n  componentWillReceiveProps(nextProps) {\r\n    if (\r\n      nextProps.changePassResponce != undefined &&\r\n      nextProps.changePassResponce.responseMessage\r\n    ) {\r\n      this.setState({\r\n        apiResponseMessage: nextProps.changePassResponce.responseMessage\r\n      });\r\n    }\r\n    if (\r\n      this.props.loginResponce != undefined &&\r\n      this.props.loginResponce.isFirstTimeLogin === true &&\r\n      this.state.changePassRemainder === 0\r\n    ) {\r\n      this.setState({\r\n        showmodal: true,\r\n        changePassRemainder: 1\r\n      });\r\n    }\r\n    // if (\r\n    //   this.props.changePassResponce != undefined &&\r\n    //   this.props.changePassResponce.isFirstTimeLogin === false\r\n    // ) {\r\n    //   this.setState({\r\n    //     showmodal: false\r\n    //   });\r\n    // }\r\n  }\r\n\r\n  logout = () => {\r\n    window.location.href = \"/\";\r\n    this.props.loggedIn(false);\r\n    //sessionStorage.setItem(\"token\", AESEncrypt(false));\r\n    sessionStorage.removeItem(\"token\");\r\n    sessionStorage.removeItem(\"givenname\");\r\n    localStorage.removeItem(\"startDate\");\r\n    localStorage.removeItem(\"endDate\");\r\n    localStorage.removeItem(\"startDateCalender\");\r\n    localStorage.removeItem(\"endDateCalender\");\r\n  };\r\n\r\n  redirectToHome = () => {\r\n    this.props.history.push(\"/Dashboard\");\r\n  };\r\n\r\n  showChangePasswordmodal = show => {\r\n    this.setState({\r\n      showmodal: show,\r\n      currentpass: \"\",\r\n      newpassword: \"\",\r\n      repeatepass: \"\",\r\n      currentPassError: \"\",\r\n      newPassError: \"\",\r\n      repeatenewPassError: \"\",\r\n      apiResponseMessage: \"\"\r\n    });\r\n  };\r\n\r\n  handleInputChange = e => {\r\n    if (e !== undefined) {\r\n      this.setState({\r\n        [e.target.name]: e.target.value\r\n      });\r\n    }\r\n  };\r\n\r\n  changePasswordClick = () => {\r\n    if (this.state.currentpass === \"\") {\r\n      this.setState({\r\n        currentPassError: \"Current password is required\",\r\n        newPassError: \"\",\r\n        repeatenewPassError: \"\"\r\n      });\r\n    } else if (this.state.newpassword === \"\") {\r\n      this.setState({\r\n        currentPassError: \"\",\r\n        newPassError: \"New password is required\",\r\n        repeatenewPassError: \"\"\r\n      });\r\n    } else if (this.state.newpassword.length < 5) {\r\n      this.setState({\r\n        currentPassError: \"\",\r\n        newPassError: \"Password must be between 5 and 30 characters\",\r\n        repeatenewPassError: \"\"\r\n      });\r\n    } else if (this.state.repeatepass === \"\") {\r\n      this.setState({\r\n        currentPassError: \"\",\r\n        newPassError: \"\",\r\n        repeatenewPassError: \"Repeate new password is required\"\r\n      });\r\n    } else if (this.state.repeatepass !== this.state.newpassword) {\r\n      this.setState({\r\n        currentPassError: \"\",\r\n        newPassError: \"\",\r\n        repeatenewPassError:\r\n          \"Repeate new password should be same as new password\"\r\n      });\r\n    } else {\r\n      //send the values to the backend\r\n      //also reset both nameError and ageError here\r\n      // const encryptedCurrentPass = md5(this.state.currentpass);\r\n      // const encryptedNewPass = md5(this.state.newpassword);\r\n      // console.log(\r\n      //   \"checking encrypted value\",\r\n      //   encryptedCurrentPass,\r\n      //   encryptedNewPass\r\n      // );\r\n\r\n      // this.props.changePassword(encryptedCurrentPass, encryptedNewPass);  encrypted password\r\n      if (this.props.loginResponce !== null) {\r\n        this.props.changePassword(\r\n          this.props.loginResponce.userName,\r\n          AESEncrypt(this.state.currentpass),\r\n          AESEncrypt(this.state.newpassword)\r\n        );\r\n\r\n        this.setState({\r\n          currentpass: \"\",\r\n          newpassword: \"\",\r\n          repeatepass: \"\",\r\n          currentPassError: \"\",\r\n          newPassError: \"\",\r\n          repeatenewPassError: \"\"\r\n        });\r\n      } else {\r\n        this.setState({\r\n          currentpass: \"\",\r\n          newpassword: \"\",\r\n          repeatepass: \"\",\r\n          currentPassError: \"\",\r\n          newPassError: \"\",\r\n          repeatenewPassError:\r\n            \"Opps something went wrong please login again and then try to change password.\"\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  handleKeyPress = e => {\r\n    if (e.key === \"Enter\") {\r\n      this.changePasswordClick();\r\n    }\r\n  };\r\n  render() {\r\n    console.log(\"pass change responce\", this.props.loginResponce);\r\n    const { location } = this.props;\r\n    if (\r\n      location.pathname.match(\"/login\") ||\r\n      location.pathname.match(\"/networkError\") ||\r\n      location.pathname.match(\"/serverError\")\r\n    ) {\r\n      return null;\r\n    }\r\n    return (\r\n      <Header\r\n        handleLogoutClick={this.logout}\r\n        loginResponce={this.props.loginResponce}\r\n        redirectToHome={this.redirectToHome}\r\n        showChangePasswordmodal={this.showChangePasswordmodal}\r\n        showmodal={this.state.showmodal}\r\n        changePasswordClick={this.changePasswordClick}\r\n        handleInputChange={this.handleInputChange}\r\n        changePassResponce={this.props.changePassResponce}\r\n        currentPassError={this.state.currentPassError}\r\n        newPassError={this.state.newPassError}\r\n        repeatenewPassError={this.state.repeatenewPassError}\r\n        apiResponseMessage={this.state.apiResponseMessage}\r\n        formValues={this.state}\r\n        loading={this.props.loading}\r\n        handleKeyPress={this.handleKeyPress}\r\n      />\r\n    );\r\n  }\r\n}\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n  loading: loadingchangepassSelector(),\r\n  loginResponce: loginresponceSelector(),\r\n  // logincheck: logincheckSelector(),\r\n  changePassResponce: changepassresponceSelector()\r\n});\r\nconst mapDispatchToProps = {\r\n  loggedIn: loggedIn,\r\n  changePassword: changePassword\r\n};\r\n\r\nexport default withRouter(\r\n  connect(mapStateToProps, mapDispatchToProps)(HeaderPage)\r\n);\r\n","import React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { createStructuredSelector } from \"reselect\";\r\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport PrivateRoute from \"./components/PrivateRoute\";\r\nimport Dashboard from \"./containers/DashBoard/\";\r\nimport NotFound from \"./components/NotFound\";\r\nimport NetworkError from \"./containers/ErrorPages/NetworkError\";\r\nimport ServerError from \"./containers/ErrorPages/ServerError\";\r\nimport DetailTrainPage from \"./containers/DetailTrainPage\";\r\nimport TrainViewPage from \"./containers/TrainViewPage\";\r\nimport LoginPage from \"./containers/Login\";\r\nimport HeaderPage from \"./containers/Header\";\r\nimport { logincheckSelector } from \"./containers/Login/selectors\";\r\n\r\n// build the router\r\nclass Routes extends React.Component {\r\n  render() {\r\n    console.log(\"in router\", this.props.logincheck);\r\n    return (\r\n      <Router>\r\n        <Fragment>\r\n          <header>\r\n            <HeaderPage />\r\n          </header>\r\n          <Switch>\r\n            <Route exact path=\"/login\" component={LoginPage} />\r\n            <PrivateRoute\r\n              exact\r\n              path=\"/dashboard\"\r\n              component={Dashboard}\r\n              isAuthenticated={this.props.logincheck}\r\n            />\r\n            <Route exact path=\"/networkError\" component={NetworkError} />\r\n            <Route exact path=\"/serverError\" component={ServerError} />\r\n            <PrivateRoute\r\n              exact\r\n              path=\"/TrainViewPage\"\r\n              component={TrainViewPage}\r\n              isAuthenticated={this.props.logincheck}\r\n            />\r\n            <PrivateRoute\r\n              exact\r\n              path=\"/DetailTrainPage\"\r\n              component={DetailTrainPage}\r\n              isAuthenticated={this.props.logincheck}\r\n            />\r\n            <PrivateRoute exact path=\"/\" component={LoginPage} />\r\n            <Route path=\"**\" component={NotFound} />\r\n          </Switch>\r\n        </Fragment>\r\n      </Router>\r\n    );\r\n  }\r\n}\r\n\r\n// export\r\nconst mapStateToProps = createStructuredSelector({\r\n  logincheck: logincheckSelector()\r\n});\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(\r\n  mapStateToProps,\r\n  mapDispatchToProps\r\n)(Routes);\r\n\r\n//export default Routes;\r\n","/**\r\n *\r\n * VersionInfo\r\n *\r\n */\r\n\r\nimport React from \"react\";\r\nimport { Col } from \"react-bootstrap\";\r\nimport preval from \"preval.macro\";\r\nimport packageJson from \"../../../package.json\";\r\nimport Moment from \"moment\";\r\n\r\nrequire(\"./styles.scss\");\r\n\r\nconst buildTimestamp = preval`module.exports = new Date().getTime();`;\r\nconst formateddate = Moment(buildTimestamp).format(\"DD.MM.YYYY HH:mm:ss\");\r\nconst copyRightYear = new Date().getFullYear();\r\nfunction VersionInfo() {\r\n  //const fullVersion = '[AIV]{version}_{date}[/AIV]';\r\n  const fullVersion = `${packageJson.version}`;\r\n  const buildDate = `${formateddate} `;\r\n  return (\r\n    <div>\r\n      <Col className=\"version-info-container\">\r\n        WWO {fullVersion} <span className=\"hideMe\"> - {buildDate}</span>\r\n        {/* <a href=\"http://new.abb.com/provider-information\" target=\"_blank\">\r\n          Provider Information/Impressum\r\n        </a> */}\r\n        &copy; Copyright {copyRightYear} ABB\r\n      </Col>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default VersionInfo;\r\n","import React from \"react\";\r\nimport \"./stylesheets/main.scss\";\r\nimport Routes from \"./router.js\";\r\nimport Header from \"./components/Header/Header\";\r\nimport Container from \"react-bootstrap/Container\";\r\nimport VersionInfo from \"./components/Footer/VersionInfo\";\r\n\r\n/* eslint-disable import/no-unresolved  */\r\n/* eslint-disable import/no-webpack-loader-syntax */\r\nimport \"!file-loader?name=[name].[ext]!./web.config\";\r\n/* import/no-webpack-loader-syntax */\r\n/* eslint-enable import/no-unresolved  */\r\n// app component\r\nexport default class App extends React.Component {\r\n  // render\r\n  render() {\r\n    console.log(\"wwwww\", window.location.origin.toString());\r\n    if (\r\n      window.location.origin.toString() ===\r\n      \"https://wwomonitoring.azurewebsites.net\"\r\n    ) {\r\n      return (\r\n        <div id=\"center\">\r\n          <div className=\"abblogoinlogin\">\r\n            <img src={require(\"./assets/images/abb-logo.svg\")} alt=\"ABB Logo\" />\r\n          </div>\r\n          <br />\r\n          <h2>Our WWO site has moved!</h2>\r\n          <h3>\r\n            The new web address for this page is{\" \"}\r\n            <div>https://re460monitoring.traction.abb.com</div>\r\n          </h3>\r\n        </div>\r\n      );\r\n    } else if (\r\n      window.location.origin.toString() ===\r\n      \"https://wwomonitoring-staging.azurewebsites.net\"\r\n    ) {\r\n      return (\r\n        <div id=\"center\">\r\n          <div className=\"abblogoinlogin\">\r\n            <img src={require(\"./assets/images/abb-logo.svg\")} alt=\"ABB Logo\" />\r\n          </div>\r\n          <br />\r\n          <h2>Our WWO site has moved!</h2>\r\n          <h3>\r\n            The new web address for this page is{\" \"}\r\n            <div>https://stage.re460monitoring.traction.abb.com</div>\r\n          </h3>\r\n        </div>\r\n      );\r\n    }\r\n    return (\r\n      <div>\r\n        {/* <header>\r\n          {\" \"}\r\n          <Header />\r\n        </header> */}\r\n\r\n        <main role=\"main\" className=\"flex-shrink-0\">\r\n          <Container fluid style={{ paddingTop: 60 }}>\r\n            <Routes />\r\n          </Container>\r\n        </main>\r\n        <footer className=\"footer mt-auto py-3\">\r\n          <VersionInfo />\r\n        </footer>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\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 subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\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 function register(config) {\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.href);\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/facebook/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. Let's check if a service worker still exists or not.\r\n        checkValidServiceWorker(swUrl, config);\r\n\r\n        // Add some additional logging to localhost, pointing developers to the\r\n        // service worker/PWA documentation.\r\n        navigator.serviceWorker.ready.then(() => {\r\n          console.log(\r\n            'This web app is being served cache-first by a service ' +\r\n              'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n          );\r\n        });\r\n      } else {\r\n        // Is not localhost. Just register service worker\r\n        registerValidSW(swUrl, config);\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n  navigator.serviceWorker\r\n    .register(swUrl)\r\n    .then(registration => {\r\n      registration.onupdatefound = () => {\r\n        const installingWorker = registration.installing;\r\n        if (installingWorker == null) {\r\n          return;\r\n        }\r\n        installingWorker.onstatechange = () => {\r\n          if (installingWorker.state === 'installed') {\r\n            if (navigator.serviceWorker.controller) {\r\n              // At this point, the updated precached content has been fetched,\r\n              // but the previous service worker will still serve the older\r\n              // content until all client tabs are closed.\r\n              console.log(\r\n                'New content is available and will be used when all ' +\r\n                  'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n              );\r\n\r\n              // Execute callback\r\n              if (config && config.onUpdate) {\r\n                config.onUpdate(registration);\r\n              }\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              // Execute callback\r\n              if (config && config.onSuccess) {\r\n                config.onSuccess(registration);\r\n              }\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, config) {\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      const contentType = response.headers.get('content-type');\r\n      if (\r\n        response.status === 404 ||\r\n        (contentType != null && contentType.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, config);\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","import { fromJS } from \"immutable\";\r\nimport Moment from \"moment\";\r\nimport {\r\n  FETCH_MAP_DATA,\r\n  FETCH_MAP_DATA_SUCCESS,\r\n  FETCH_MAP_DATA_FAILURE,\r\n  FETCH_TRAIN_LIST,\r\n  FETCH_TRAIN_LIST_SUCCESS,\r\n  FETCH_TRAIN_LIST_FAILURE,\r\n  SET_CURRENT_TRAIN,\r\n  SET_DATE,\r\n} from \"./constants\";\r\n\r\nconst initialState = fromJS({\r\n  loading: null,\r\n  loadingMap: false,\r\n  startDate: new Date(2022, 2, 1, 0, 0, 0), ///new Date(Moment().subtract(10, \"days\").startOf(\"day\")),\r\n  endDate: new Date(2022, 2, 10, 23, 59, 59), //new Date(Moment().subtract(1, \"days\").endOf(\"day\")),\r\n  selectedTrain: \"Re 460 010-2\",\r\n  mapData: null,\r\n  fleetData: null,\r\n  error: null,\r\n});\r\n\r\nexport function reducerDashboard(state = initialState, action) {\r\n  switch (action.type) {\r\n    case FETCH_MAP_DATA:\r\n      return state.set(\"loadingMap\", true).set(\"error\", null);\r\n    case FETCH_MAP_DATA_SUCCESS:\r\n      return state.set(\"loadingMap\", false).set(\"mapData\", action.Mapdata);\r\n    case FETCH_MAP_DATA_FAILURE:\r\n      return state\r\n        .set(\"loadingMap\", false)\r\n        .set(\"mapData\", null)\r\n        .set(\"error\", action.error);\r\n\r\n    case FETCH_TRAIN_LIST:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case FETCH_TRAIN_LIST_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"fleetData\", action.TrainList);\r\n    case FETCH_TRAIN_LIST_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"fleetData\", null)\r\n        .set(\"error\", action.error);\r\n\r\n    case SET_CURRENT_TRAIN:\r\n      return state.set(\"selectedTrain\", action.trainName);\r\n\r\n    case SET_DATE:\r\n      return state\r\n        .set(\"startDate\", action.payload.startDate)\r\n        .set(\"endDate\", action.payload.endDate);\r\n\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n","import { fromJS } from \"immutable\";\r\nimport { combineReducers } from \"redux-immutable\";\r\nimport {\r\n  GET_TRAINVIEW_MAP,\r\n  GET_TRAINVIEW_MAPSLIP1_SUCCESS,\r\n  GET_TRAINVIEW_MAPSLIP2_SUCCESS,\r\n  GET_TRAINVIEW_MAPSPEED1_SUCCESS,\r\n  GET_TRAINVIEW_MAPSPEED2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORT1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORT2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_TRAINVIEW_MAP_FAILURE,\r\n  CLEAR_TRAINVIEW_MAP,\r\n  GET_TRAINVIEW_HISTOGRAM,\r\n  GET_TRAINVIEW_HISTOGRAM_SUCCESS,\r\n  GET_TRAINVIEW_HISTOGRAM_FAILURE,\r\n  CLEAR_TRAINVIEW_HISTOGRAM,\r\n  SET_TAB,\r\n} from \"./constants\";\r\n\r\nconst initialState = fromJS({\r\n  // loading: false,\r\n  // mapData: null,\r\n  // graphData: null,\r\n  // error: null,\r\n  selectedTab: \"MAP_TYPE\",\r\n  //tabloading: false\r\n  loadingHistogram: false,\r\n  histogramData: null,\r\n});\r\n\r\nfunction reducerCommon(state = initialState, action) {\r\n  switch (action.type) {\r\n    /*case GET_TRAINVIEW_MAPDATA:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_TRAINVIEW_MAPDATA_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapData\", action.Mapdata);\r\n    case GET_TRAINVIEW_MAPDATA_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapData\", null)\r\n        .set(\"error\", action.error);\r\n    case GET_TRAINVIEW_GRAPHDATA:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_TRAINVIEW_GRAPHDATA_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"graphData\", action.Graphdata);\r\n    case GET_TRAINVIEW_GRAPHDATA_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"graphData\", null)\r\n        .set(\"error\", action.error);*/\r\n\r\n    case SET_TAB:\r\n      return state.set(\"selectedTab\", action.payload);\r\n    case GET_TRAINVIEW_HISTOGRAM:\r\n      return state\r\n        .set(\"loadingHistogram\", true)\r\n        .set(\"error\", null)\r\n        .set(\"histogramData\", null);\r\n    case GET_TRAINVIEW_HISTOGRAM_SUCCESS:\r\n      return state\r\n        .set(\"loadingHistogram\", false)\r\n        .set(\"histogramData\", action.payload);\r\n    case GET_TRAINVIEW_HISTOGRAM_FAILURE:\r\n      return state\r\n        .set(\"loadingHistogram\", false)\r\n        .set(\"histogramData\", null)\r\n        .set(\"error\", action.payload);\r\n    case CLEAR_TRAINVIEW_HISTOGRAM:\r\n      return state.set(\"histogramData\", null);\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nconst mapInitialState = fromJS({\r\n  loading: false,\r\n  error: null,\r\n  mapSlip1: null,\r\n  mapSlip2: null,\r\n  mapSpeed1: null,\r\n  mapSpeed2: null,\r\n  mapEffort1: null,\r\n  mapEffort2: null,\r\n  mapEffortDriving1: null,\r\n  mapEffortDriving2: null,\r\n  mapEffortBraking1: null,\r\n  mapEffortBraking2: null,\r\n  mapEffortBrakingMech1: null,\r\n  mapEffortBrakingMech2: null,\r\n  mapDrivingTrailerVel1: null,\r\n  selectedMainMap: null,\r\n});\r\n\r\nfunction reducerMap(state = mapInitialState, action) {\r\n  console.log(\"Action: \", action.type);\r\n  switch (action.type) {\r\n    case GET_TRAINVIEW_MAP:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_TRAINVIEW_MAPSLIP1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlip1\", action.payload);\r\n    case GET_TRAINVIEW_MAPSLIP2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlip2\", action.payload);\r\n    case GET_TRAINVIEW_MAPSPEED1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSpeed1\", action.payload);\r\n    case GET_TRAINVIEW_MAPSPEED2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSpeed2\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORT1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapEffort1\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORT2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapEffort2\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTDRIVING1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortDriving1\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTDRIVING2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortDriving2\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTBRAKING1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBraking1\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTBRAKING2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBraking2\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBrakingMech1\", action.payload);\r\n    case GET_TRAINVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBrakingMech2\", action.payload);\r\n    case GET_TRAINVIEW_MAPDRIVINGTRAILERVEL1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapDrivingTrailerVel1\", action.payload);\r\n    case GET_TRAINVIEW_MAP_FAILURE:\r\n      return state.set(\"loading\", false).set(\"error\", action.payload);\r\n    case CLEAR_TRAINVIEW_MAP:\r\n      return state\r\n        .set(\"mapSlip1\", null)\r\n        .set(\"mapSlip2\", null)\r\n        .set(\"mapSpeed1\", null)\r\n        .set(\"mapSpeed2\", null)\r\n        .set(\"mapEffort1\", null)\r\n        .set(\"mapEffort2\", null)\r\n        .set(\"mapEffortDriving1\", null)\r\n        .set(\"mapEffortDriving2\", null)\r\n        .set(\"mapEffortBraking1\", null)\r\n        .set(\"mapEffortBraking2\", null)\r\n        .set(\"mapEffortBrakingMech1\", null)\r\n        .set(\"mapEffortBrakingMech2\", null)\r\n        .set(\"mapDrivingTrailerVel1\", null);\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nconst trainViewReducer = combineReducers({\r\n  reducerCommon: reducerCommon,\r\n  reducerMap: reducerMap,\r\n});\r\n\r\nexport default trainViewReducer;\r\n","import { fromJS } from \"immutable\";\r\nimport { combineReducers } from \"redux-immutable\";\r\nimport {\r\n  GET_DETAILVIEW_TIMETREND,\r\n  GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_DV_TT_EFFORTREFERENCE1_SUCCESS,\r\n  GET_DV_TT_EFFORTREFERENCE2_SUCCESS,\r\n  GET_DV_TT_SLIPPOWER1_SUCCESS,\r\n  GET_DV_TT_SLIPPOWER2_SUCCESS,\r\n  GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS,\r\n  GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS,\r\n  GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  GET_DETAILVIEW_TIMETREND_FAILURE,\r\n  CLEAR_DETAILVIEW_TIMETREND,\r\n  GET_DETAILVIEW_MAP,\r\n  GET_DETAILVIEW_MAPSLIP1_SUCCESS,\r\n  GET_DETAILVIEW_MAPSLIP2_SUCCESS,\r\n  GET_DETAILVIEW_MAPSPEED1_SUCCESS,\r\n  GET_DETAILVIEW_MAPSPEED2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORT1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORT2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS,\r\n  GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS,\r\n  GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS,\r\n  GET_DV_MAPEFFORTREFERENCE1_SUCCESS,\r\n  GET_DV_MAPEFFORTREFERENCE2_SUCCESS,\r\n  GET_DV_MAPSLIPPOWER1_SUCCESS,\r\n  GET_DV_MAPSLIPPOWER2_SUCCESS,\r\n  GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS,\r\n  GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS,\r\n  GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS,\r\n  GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS,\r\n  GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS,\r\n  GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS,\r\n  GET_DETAILVIEW_MAP_FAILURE,\r\n  CLEAR_DETAILVIEW_MAP,\r\n  GET_DETAILVIEW_SCATTERPLOT,\r\n  GET_DETAILVIEW_SCATTERPLOT_SUCCESS,\r\n  GET_DETAILVIEW_SCATTERPLOT_FAILURE,\r\n  GET_DETAILVIEW_SCATTERPLOT2_SUCCESS,\r\n  GET_DETAILVIEW_SCATTERPLOT2_FAILURE,\r\n  CLEAR_DETAILVIEW_SCATTERPLOT,\r\n  SET_FILTER,\r\n  SET_FILTER_ADVANCED,\r\n  SET_MAINTRENDSIGNAL,\r\n  SET_MAINSCATTERSIGNAL,\r\n  ADD_OVERLAY,\r\n  CLEAR_BASICFILTER,\r\n  CLEAR_ADVANCEDFILTER,\r\n  SET_LOADING,\r\n  GET_DETAILVIEW_HISTOGRAM,\r\n  GET_DETAILVIEW_HISTOGRAM_SUCCESS,\r\n  GET_DETAILVIEW_HISTOGRAM_FAILURE,\r\n  CLEAR_DETAILVIEW_HISTOGRAM,\r\n  SET_TIMETREND_LOADING,\r\n  GET_DETAILVIEW_MAPDATESLIDER,\r\n  GET_DETAILVIEW_MAPDATESLIDER_SUCCESS,\r\n  GET_DETAILVIEW_MAPDATESLIDER_FAILURE,\r\n  CLEAR_DETAILVIEW_MAPDATESLIDER,\r\n} from \"./constants\";\r\n\r\nconst initialState = fromJS({\r\n  loading: false,\r\n  loadingScatterB2: false,\r\n  error: null,\r\n  filter: { weather: \"All\", operation: [0, 1, 2, 3, 4, 5], bogie: 3 },\r\n  filterAdvanced: {\r\n    temperature: [1, 2, 3],\r\n    drivingtrailervelocity: 2,\r\n    sander: 2,\r\n    toprotection: 2,\r\n    // adhesioncontrol: 2,\r\n    // slingbrake: 2,\r\n    antislipbrake: 2,\r\n  },\r\n  selectedMainScatter: null,\r\n  scatterplotData: null,\r\n  scatterplotData2: null,\r\n  histogramData: null,\r\n});\r\n\r\nfunction reducerCommon(state = initialState, action) {\r\n  console.log(\"Action: \", action.type);\r\n  switch (action.type) {\r\n    case SET_FILTER:\r\n      return state.set(\"filter\", {\r\n        weather: action.payload.weather,\r\n        operation: action.payload.operation,\r\n        bogie: action.payload.bogie,\r\n      });\r\n\r\n    case CLEAR_BASICFILTER:\r\n      return state.set(\"filter\", {\r\n        weather: \"All\",\r\n        operation: [0, 1, 2, 3, 4, 5],\r\n        bogie: 3,\r\n      });\r\n\r\n    case SET_FILTER_ADVANCED:\r\n      return state.set(\"filterAdvanced\", {\r\n        temperature: action.payload.temperature,\r\n        drivingtrailervelocity: action.payload.drivingtrailervelocity,\r\n        sander: action.payload.sander,\r\n        toprotection: action.payload.toprotection,\r\n        // adhesioncontrol: action.payload.adhesioncontrol,\r\n        // slingbrake: action.payload.slingbrake,\r\n        antislipbrake: action.payload.antislipbrake,\r\n      });\r\n\r\n    case CLEAR_ADVANCEDFILTER:\r\n      return state.set(\"filterAdvanced\", {\r\n        temperature: [1, 2, 3],\r\n        drivingtrailervelocity: 2,\r\n        sander: 2,\r\n        toprotection: 2,\r\n        // adhesioncontrol: 2,\r\n        // slingbrake: 2,\r\n        antislipbrake: 2,\r\n      });\r\n\r\n    //------------------------------\r\n\r\n    case SET_LOADING:\r\n      return state.set(\"loading\", action.payload);\r\n\r\n    case SET_MAINSCATTERSIGNAL:\r\n      return state.set(\"selectedMainScatter\", action.payload.scatter);\r\n\r\n    case GET_DETAILVIEW_SCATTERPLOT:\r\n      return state\r\n        .set(\"loading\", true)\r\n        .set(\"loadingScatterB2\", true)\r\n        .set(\"error\", null)\r\n        .set(\"scatterplotData2\", null)\r\n        .set(\"scatterplotData\", null);\r\n    case GET_DETAILVIEW_SCATTERPLOT_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"scatterplotData\", action.payload);\r\n    case GET_DETAILVIEW_SCATTERPLOT_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"scatterplotData\", null)\r\n        .set(\"error\", action.payload);\r\n\r\n    case GET_DETAILVIEW_SCATTERPLOT2_SUCCESS:\r\n      return state\r\n        .set(\"loadingScatterB2\", false)\r\n        .set(\"scatterplotData2\", action.payload);\r\n    case GET_DETAILVIEW_SCATTERPLOT_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"scatterplotData2\", null)\r\n        .set(\"error\", action.payload);\r\n    case CLEAR_DETAILVIEW_SCATTERPLOT:\r\n      return state.set(\"scatterplotData\", null).set(\"scatterplotData2\", null);\r\n\r\n    //---------------------\r\n\r\n    case GET_DETAILVIEW_HISTOGRAM:\r\n      return state\r\n        .set(\"loading\", true)\r\n        .set(\"error\", null)\r\n        .set(\"histogramData\", null);\r\n    case GET_DETAILVIEW_HISTOGRAM_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"histogramData\", action.payload);\r\n    case GET_DETAILVIEW_HISTOGRAM_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"histogramData\", null)\r\n        .set(\"error\", action.payload);\r\n    case CLEAR_DETAILVIEW_HISTOGRAM:\r\n      return state.set(\"histogramData\", null);\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nconst mapInitialState = fromJS({\r\n  loading: false,\r\n  error: null,\r\n  mapSlip1: null,\r\n  mapSlip2: null,\r\n  mapSpeed1: null,\r\n  mapSpeed2: null,\r\n  mapEffort1: null,\r\n  mapEffort2: null,\r\n  mapEffortDriving1: null,\r\n  mapEffortDriving2: null,\r\n  mapEffortBraking1: null,\r\n  mapEffortBraking2: null,\r\n  mapEffortBrakingMech1: null,\r\n  mapEffortBrakingMech2: null,\r\n  mapDrivingTrailerVel1: null,\r\n  mapEffortReference1: null,\r\n  mapEffortReference2: null,\r\n  mapSlipPower1: null,\r\n  mapSlipPower2: null,\r\n  mapPowerBrakingMechanical1: null,\r\n  mapPowerBrakingMechanical2: null,\r\n  mapAirPressureBrakeCylinder1: null,\r\n  mapAirPressureBrakeCylinder2: null,\r\n  mapAmplitudeTorsionalOscillation1: null,\r\n  mapAmplitudeTorsionalOscillation2: null,\r\n  selectedMainMap: null,\r\n  totalRuns: null,\r\n});\r\n\r\nfunction reducerMap(state = mapInitialState, action) {\r\n  console.log(\"Action: \", action.type);\r\n  switch (action.type) {\r\n    case GET_DETAILVIEW_MAP:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_DETAILVIEW_MAPSLIP1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlip1\", action.payload);\r\n    case GET_DETAILVIEW_MAPSLIP2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlip2\", action.payload);\r\n    case GET_DETAILVIEW_MAPSPEED1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSpeed1\", action.payload);\r\n    case GET_DETAILVIEW_MAPSPEED2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSpeed2\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORT1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapEffort1\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORT2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapEffort2\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTDRIVING1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortDriving1\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTDRIVING2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortDriving2\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTBRAKING1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBraking1\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTBRAKING2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBraking2\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTBRAKINGMECH1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBrakingMech1\", action.payload);\r\n    case GET_DETAILVIEW_MAPEFFORTBRAKINGMECH2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortBrakingMech2\", action.payload);\r\n\r\n    case GET_DV_MAPDRIVINGTRAILERVEL1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapDrivingTrailerVel1\", action.payload);\r\n    case GET_DV_MAPEFFORTREFERENCE1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortReference1\", action.payload);\r\n    case GET_DV_MAPEFFORTREFERENCE2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapEffortReference2\", action.payload);\r\n    case GET_DV_MAPSLIPPOWER1_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlipPower1\", action.payload);\r\n    case GET_DV_MAPSLIPPOWER2_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"mapSlipPower2\", action.payload);\r\n    case GET_DV_MAPPOWERBRAKINGMECHANICAL1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapPowerBrakingMechanical1\", action.payload);\r\n    case GET_DV_MAPPOWERBRAKINGMECHANICAL2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapPowerBrakingMechanical2\", action.payload);\r\n    case GET_DV_MAPAIRPRESSUREBRAKECYLINDER1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapAirPressureBrakeCylinder1\", action.payload);\r\n    case GET_DV_MAPAIRPRESSUREBRAKECYLINDER2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapAirPressureBrakeCylinder2\", action.payload);\r\n    case GET_DV_MAPAMPLITUDETORSIONALOSCILLATION1_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapAmplitudeTorsionalOscillation1\", action.payload);\r\n    case GET_DV_MAPAMPLITUDETORSIONALOSCILLATION2_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"mapAmplitudeTorsionalOscillation2\", action.payload);\r\n\r\n    case GET_DETAILVIEW_MAP_FAILURE:\r\n      return state.set(\"loading\", false).set(\"error\", action.payload);\r\n    case CLEAR_DETAILVIEW_MAP:\r\n      return state\r\n        .set(\"mapSlip1\", null)\r\n        .set(\"mapSlip2\", null)\r\n        .set(\"mapSpeed1\", null)\r\n        .set(\"mapSpeed2\", null)\r\n        .set(\"mapEffort1\", null)\r\n        .set(\"mapEffort2\", null)\r\n        .set(\"mapEffortDriving1\", null)\r\n        .set(\"mapEffortDriving2\", null)\r\n        .set(\"mapEffortBraking1\", null)\r\n        .set(\"mapEffortBraking2\", null)\r\n        .set(\"mapEffortBrakingMech1\", null)\r\n        .set(\"mapEffortBrakingMech2\", null)\r\n        .set(\"mapDrivingTrailerVel1\", null)\r\n        .set(\"mapEffortReference1\", null)\r\n        .set(\"mapEffortReference2\", null)\r\n        .set(\"mapSlipPower1\", null)\r\n        .set(\"mapSlipPower2\", null)\r\n        .set(\"mapPowerBrakingMechanical1\", null)\r\n        .set(\"mapPowerBrakingMechanical2\", null)\r\n        .set(\"mapAirPressureBrakeCylinder1\", null)\r\n        .set(\"mapAirPressureBrakeCylinder2\", null)\r\n        .set(\"mapAmplitudeTorsionalOscillation1\", null)\r\n        .set(\"mapAmplitudeTorsionalOscillation2\", null);\r\n\r\n    case GET_DETAILVIEW_MAPDATESLIDER:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_DETAILVIEW_MAPDATESLIDER_SUCCESS:\r\n      return state.set(\"loading\", false).set(\"totalRuns\", action.payload);\r\n    case GET_DETAILVIEW_MAPDATESLIDER_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"totalRuns\", null)\r\n        .set(\"error\", action.payload);\r\n    case CLEAR_DETAILVIEW_MAPDATESLIDER:\r\n      return state.set(\"totalRuns\", null);\r\n\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nconst timetrendInitialState = fromJS({\r\n  loading: false,\r\n  error: null,\r\n  selectedMainTrend: \"Speed Driving Trailer\",\r\n  selectedOverlaysTrend: null,\r\n  timetrendDataSlip1: null,\r\n  timetrendDataSlip2: null,\r\n  timetrendDataSpeed1: null,\r\n  timetrendDataSpeed2: null,\r\n  timetrendDataEffort1: null,\r\n  timetrendDataEffort2: null,\r\n  timetrendDataEffortDriving1: null,\r\n  timetrendDataEffortDriving2: null,\r\n  timetrendDataEffortBraking1: null,\r\n  timetrendDataEffortBraking2: null,\r\n  timetrendDataEffortBrakingMech1: null,\r\n  timetrendDataEffortBrakingMech2: null,\r\n  //************* */\r\n  ttDataDrivingTrailerVel1: null,\r\n  ttDataEffortReference1: null,\r\n  ttDataEffortReference2: null,\r\n  ttDataSlipPower1: null,\r\n  ttDataSlipPower2: null,\r\n  ttDataPowerBrakingMechanical1: null,\r\n  ttDataPowerBrakingMechanical2: null,\r\n  ttDataAirPressureBrakeCylinder1: null,\r\n  ttDataAirPressureBrakeCylinder2: null,\r\n  ttDataAmplitudeTorsionalOscillation1: null,\r\n  ttDataAmplitudeTorsionalOscillation2: null,\r\n});\r\n\r\nfunction reducerTimetrend(state = timetrendInitialState, action) {\r\n  console.log(\"Action: \", action.type);\r\n  switch (action.type) {\r\n    case GET_DETAILVIEW_TIMETREND:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case GET_DETAILVIEW_TIMETRENDSLIP1_SUCCESS:\r\n      return state.set(\"timetrendDataSlip1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDSLIP2_SUCCESS:\r\n      return state.set(\"timetrendDataSlip2\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDSPEED1_SUCCESS:\r\n      return state.set(\"timetrendDataSpeed1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDSPEED2_SUCCESS:\r\n      return state.set(\"timetrendDataSpeed2\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORT1_SUCCESS:\r\n      return state.set(\"timetrendDataEffort1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORT2_SUCCESS:\r\n      return state.set(\"timetrendDataEffort2\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTDRIVING1_SUCCESS:\r\n      return state.set(\"timetrendDataEffortDriving1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTDRIVING2_SUCCESS:\r\n      return state.set(\"timetrendDataEffortDriving2\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTBRAKING1_SUCCESS:\r\n      return state.set(\"timetrendDataEffortBraking1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTBRAKING2_SUCCESS:\r\n      return state.set(\"timetrendDataEffortBraking2\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH1_SUCCESS:\r\n      return state.set(\"timetrendDataEffortBrakingMech1\", action.payload);\r\n    case GET_DETAILVIEW_TIMETRENDEFFORTBRAKINGMECH2_SUCCESS:\r\n      return state.set(\"timetrendDataEffortBrakingMech2\", action.payload);\r\n\r\n    case GET_DV_TT_DRIVINGTRAILERVEL1_SUCCESS:\r\n      return state.set(\"ttDataDrivingTrailerVel1\", action.payload);\r\n    case GET_DV_TT_EFFORTREFERENCE1_SUCCESS:\r\n      return state.set(\"ttDataEffortReference1\", action.payload);\r\n    case GET_DV_TT_EFFORTREFERENCE2_SUCCESS:\r\n      return state.set(\"ttDataEffortReference2\", action.payload);\r\n    case GET_DV_TT_SLIPPOWER1_SUCCESS:\r\n      return state.set(\"ttDataSlipPower1\", action.payload);\r\n    case GET_DV_TT_SLIPPOWER2_SUCCESS:\r\n      return state.set(\"ttDataSlipPower2\", action.payload);\r\n    case GET_DV_TT_POWERBRAKINGMECHANICAL1_SUCCESS:\r\n      return state.set(\"ttDataPowerBrakingMechanical1\", action.payload);\r\n    case GET_DV_TT_POWERBRAKINGMECHANICAL2_SUCCESS:\r\n      return state.set(\"ttDataPowerBrakingMechanical2\", action.payload);\r\n    case GET_DV_TT_AIRPRESSUREBRAKECYLINDER1_SUCCESS:\r\n      return state.set(\"ttDataAirPressureBrakeCylinder1\", action.payload);\r\n    case GET_DV_TT_AIRPRESSUREBRAKECYLINDER2_SUCCESS:\r\n      return state.set(\"ttDataAirPressureBrakeCylinder2\", action.payload);\r\n    case GET_DV_TT_AMPLITUDETORSIONALOSCILLATION1_SUCCESS:\r\n      return state.set(\"ttDataAmplitudeTorsionalOscillation1\", action.payload);\r\n    case GET_DV_TT_AMPLITUDETORSIONALOSCILLATION2_SUCCESS:\r\n      return state.set(\"ttDataAmplitudeTorsionalOscillation2\", action.payload);\r\n\r\n    case GET_DETAILVIEW_TIMETREND_FAILURE:\r\n      return (\r\n        state\r\n          .set(\"loading\", false)\r\n          //.set(\"timetrendDataSlip1\", null)\r\n          .set(\"error\", action.payload)\r\n      );\r\n\r\n    case SET_MAINTRENDSIGNAL:\r\n      return state.set(\"selectedMainTrend\", action.payload.trend);\r\n\r\n    case ADD_OVERLAY:\r\n      return state.set(\"selectedOverlaysTrend\", action.payload);\r\n\r\n    case SET_TIMETREND_LOADING:\r\n      return state.set(\"loading\", action.payload);\r\n\r\n    case CLEAR_DETAILVIEW_TIMETREND:\r\n      return state\r\n        .set(\"timetrendDataSlip1\", null)\r\n        .set(\"timetrendDataSlip2\", null)\r\n        .set(\"timetrendDataSpeed1\", null)\r\n        .set(\"timetrendDataSpeed2\", null)\r\n        .set(\"timetrendDataEffort1\", null)\r\n        .set(\"timetrendDataEffort2\", null)\r\n        .set(\"timetrendDataEffortDriving1\", null)\r\n        .set(\"timetrendDataEffortDriving2\", null)\r\n        .set(\"timetrendDataEffortBraking1\", null)\r\n        .set(\"timetrendDataEffortBraking2\", null)\r\n        .set(\"timetrendDataEffortBrakingMech1\", null)\r\n        .set(\"timetrendDataEffortBrakingMech2\", null)\r\n\r\n        .set(\"ttDataDrivingTrailerVel1\", null)\r\n        .set(\"ttDataEffortReference1\", null)\r\n        .set(\"ttDataEffortReference2\", null)\r\n        .set(\"ttDataSlipPower1\", null)\r\n        .set(\"ttDataSlipPower2\", null)\r\n        .set(\"ttDataPowerBrakingMechanical1\", null)\r\n        .set(\"ttDataPowerBrakingMechanical2\", null)\r\n        .set(\"ttDataAirPressureBrakeCylinder1\", null)\r\n        .set(\"ttDataAirPressureBrakeCylinder2\", null)\r\n        .set(\"ttDataAmplitudeTorsionalOscillation1\", null)\r\n        .set(\"ttDataAmplitudeTorsionalOscillation2\", null);\r\n\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nconst detailViewReducer = combineReducers({\r\n  reducerCommon: reducerCommon,\r\n  reducerMap: reducerMap,\r\n  reducerTimetrend: reducerTimetrend,\r\n});\r\n\r\nexport default detailViewReducer;\r\n","import { fromJS } from \"immutable\";\r\nimport {\r\n  LOGIN,\r\n  LOGIN_SUCCESS,\r\n  LOGIN_FAILURE,\r\n  LOGGEDIN,\r\n  CHANGEPASSWORD,\r\n  CHANGEPASSWORD_SUCCESS,\r\n  CHANGEPASSWORD_FAILURE\r\n} from \"./constants\";\r\n\r\nconst initialState = fromJS({\r\n  loading: false,\r\n  username: \"\",\r\n  password: \"\",\r\n  error: null,\r\n  loginresponce: null,\r\n  isloggedIn: false,\r\n  loadingchangepass: false,\r\n  changepassresponce: null\r\n});\r\n\r\nexport function reducerLogin(state = initialState, action) {\r\n  switch (action.type) {\r\n    case LOGIN:\r\n      return state.set(\"loading\", true).set(\"error\", null);\r\n    case LOGIN_SUCCESS:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"loginresponce\", action.loginresponce);\r\n    case LOGIN_FAILURE:\r\n      return state\r\n        .set(\"loading\", false)\r\n        .set(\"loginresponce\", null)\r\n        .set(\"error\", action.error);\r\n    case LOGGEDIN:\r\n      return state.set(\"isloggedIn\", action.isloggedIn);\r\n\r\n    // change pass\r\n    case CHANGEPASSWORD:\r\n      return state.set(\"loadingchangepass\", true).set(\"error\", null);\r\n    case CHANGEPASSWORD_SUCCESS:\r\n      return state\r\n        .set(\"loadingchangepass\", false)\r\n        .set(\"changepassresponce\", action.changepassresponce);\r\n    case CHANGEPASSWORD_FAILURE:\r\n      return state\r\n        .set(\"loadingchangepass\", false)\r\n        .set(\"changepassresponce\", null)\r\n        .set(\"error\", action.error);\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n","import { combineReducers } from \"redux-immutable\";\r\nimport { reducerDashboard } from \"../containers/DashBoard/reducers\";\r\nimport trainViewReducer from \"../containers/TrainViewPage/reducers\";\r\nimport detailViewReducer from \"../containers/DetailTrainPage/reducers\";\r\nimport { reducerLogin } from \"../containers/Login/reducers\";\r\n\r\nexport const reducers = combineReducers({\r\n  dashboardData: reducerDashboard,\r\n  trainViewData: trainViewReducer,\r\n  detailViewData: detailViewReducer,\r\n  loginData: reducerLogin\r\n});\r\n","import debug from 'debug';\r\nexport const ERROR_401 = 'RcmMetricUI/utils/ERROR_401';\r\n\r\nexport const returnData = (axiosResponse) => { // eslint-disable-line\r\n  return axiosResponse.data.payload ? axiosResponse.data.payload : axiosResponse.data;\r\n};\r\n\r\nexport const handleError = (error, failedAction) => {\r\n  debug('dev')('Failed Action:', failedAction);\r\n  const { error401, otherError } = parseError(error);\r\n  if (error401) {\r\n    return {\r\n      type: ERROR_401,\r\n    };\r\n  }\r\n  return failedAction(otherError);\r\n};\r\n\r\nexport const parseError = (err) => {\r\n  debug('dev')('parseError', err); // eslint-disable-line no-console\r\n  if (err.config) {\r\n    debug('dev')('parseError:url', err.config.url); // eslint-disable-line no-console\r\n  }\r\n  if (err && err.status === 401) return { error401: true };\r\n  return (err instanceof Error) ? {\r\n    otherError: {\r\n      jsError: err.toString(),\r\n    },\r\n  } : {\r\n    otherError: {\r\n      ...err,\r\n    },\r\n  };\r\n};\r\n","let API = null;\r\n\r\nif (process.env.REACT_APP_WWO_API === \"development\") {\r\n  API = {\r\n    resourceUrl: \"https://wwomonitoring-api-dev.azurewebsites.net\",\r\n    baseUrl: \"https://wwomonitoring-api-dev.azurewebsites.net\"\r\n  };\r\n} else if (process.env.REACT_APP_WWO_API === \"production\") {\r\n  API = {\r\n    resourceUrl: \"https://wwomonitoring-api.azurewebsites.net\",\r\n    baseUrl: \"https://wwomonitoring-api.azurewebsites.net\"\r\n  };\r\n} else if (process.env.REACT_APP_WWO_API === \"stage\") {\r\n  API = {\r\n    resourceUrl: \"https://wwomonitoring-api-staging.azurewebsites.net\",\r\n    baseUrl: \"https://wwomonitoring-api-staging.azurewebsites.net\"\r\n  };\r\n} else {\r\n  API = {\r\n    resourceUrl: \"https://wwomonitoring-api.azurewebsites.net\",\r\n    baseUrl: \"https://wwomonitoring-api.azurewebsites.net\"\r\n  };\r\n}\r\n\r\nconst exportedAPI = API;\r\nexport default exportedAPI;","import axios from \"axios\";\r\nimport moment from \"moment\";\r\nimport momentLocalizer from \"react-widgets-moment\";\r\nimport { returnData } from \"./api-utils\";\r\nimport auth from \"./auth\";\r\nimport apiConfig from \"./api-config\";\r\nimport { fleetData, mapData } from \"../containers/DashBoard/mockData\";\r\nimport { timetrend } from \"../mockdata/detailtrainviewtimetrend\";\r\nimport { scatterdata } from \"../mockdata/detailtrainviewscatter\";\r\nimport { trainviewMapData } from \"../mockdata/trainviewmapdata\";\r\nimport { trainviewGraphData } from \"../mockdata/trainviewgraphdata\";\r\n//import { histogramdata } from \"../mockdata/detailtrainviewhistogram\";\r\nimport debug from \"debug\";\r\n\r\nmoment.locale(\"en\");\r\nmomentLocalizer();\r\n\r\nconst { baseUrl } = apiConfig;\r\n\r\nconst config = () => {\r\n  return {\r\n    baseURL: baseUrl,\r\n    headers: { \"Content-Type\": \"application/json\" },\r\n  };\r\n};\r\n\r\nconst catchError = (error) => {\r\n  if (!error.response && !navigator.onLine) {\r\n    return (window.location.pathname = \"/networkError\");\r\n  } else if (!error.response && navigator.onLine) {\r\n    //return (window.location.pathname = \"/serverError\");\r\n  } else if (error.response) {\r\n    return Promise.reject(error.response);\r\n  }\r\n  return Promise.reject(error);\r\n};\r\n\r\n//Dashboard\r\nconst fetchTrainListData = (startDate, endDate) =>\r\n  axios\r\n    .get(\r\n      `/api/v2/fleetView?startDate=${startDate}&endDate=${endDate}`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n\r\nconst fetchMapDataList = (startDate, endDate) =>\r\n  axios\r\n    // .get(`/api/v1/mapView?startDate=${startDate}&endDate=${endDate}`, config())\r\n    .get(\r\n      `/api/v1/dashBoardMapViewRunWise?startDate=${startDate}&endDate=${endDate}`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n\r\n//TrainView\r\nconst fetchTrainViewMapData = (id, startDate, endDate, docType, bogie) => {\r\n  return axios\r\n    .get(\r\n      //`/api/v1/locomotivesGPSTimeArrowBogieSpecific?id=678910&docType=${docType}&bogie=${bogie}&startDate=2019-07-03T05%3A10%3A55&endDate=2019-07-03T06%3A26%3A15`,\r\n      //`/api/v1/locomotivesGPSTimeArrowBogieSpecific?name=${id}&docType=${docType}&bogie=${bogie}&startDate=${startDate}&endDate=${endDate}`,\r\n      `/api/v2/locomotiveRuns?name=${id}&docType=${docType}&bogie=${bogie}&startDate=${startDate}&endDate=${endDate}&filterRuns=false`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n  //return timetrend.payload;\r\n};\r\n\r\nconst fetchTrainViewGraphData = (id, startDate, endDate) => {\r\n  //return timetrend.payload; //trainviewGraphData;\r\n  return axios\r\n    .get(\r\n      `/api/v1/locomotivesAggregatedSignals?id=${id}&startDate=${startDate}&endDate=${endDate}`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\n\r\n//DetailView\r\nconst fetchDetailViewMapData = (id, startDate, endDate, docType, bogie) => {\r\n  let myDate;\r\n  if (sessionStorage.getItem(\"clickedTimeStamp\") !== null) {\r\n    myDate = moment(\r\n      sessionStorage.getItem(\"clickedTimeStamp\"),\r\n      \"DD.MM.YYYY, HH:mm:ss\"\r\n    )\r\n      .format(\"YYYY-MM-DDTHH:mm:ss\")\r\n      .replace(/:/g, \"%3A\");\r\n  } else {\r\n    myDate = \"0001-01-01T00%3A00%3A00\";\r\n  }\r\n  return axios\r\n    .get(\r\n      //`/api/v1/locomotivesGPSTimeArrowBogieSpecific?id=678910&docType=${docType}&bogie=${bogie}&startDate=2019-07-03T05%3A10%3A55&endDate=2019-07-03T06%3A26%3A15`,\r\n      //`/api/v1/locomotivesGPSTimeArrowBogieSpecific?id=678910&docType=${docType}&bogie=${bogie}&startDate=${startDate}&endDate=${endDate}`,\r\n      `/api/v2/locomotiveRuns?name=${id}&docType=${docType}&bogie=${bogie}&startDate=${startDate}&endDate=${endDate}&clickedTimeStamp=${myDate}&filterRuns=true`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n  //return timetrend.payload;\r\n};\r\n\r\nconst fetchDetailViewTimetrendData = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  docType,\r\n  bogie\r\n) => {\r\n  return axios\r\n    .get(\r\n      //`/api/v1/locomotivesSignalBogieSpecific?id=678910&startDate=2019-07-03T05%3A10%3A55&endDate=2019-07-03T06%3A26%3A15&docType=${docType}&bogie=${bogie}`,\r\n      `/api/v2/locomotivesSignalBogieSpecific?name=${id}&startDate=${startDate}&endDate=${endDate}&docType=${docType}&bogie=${bogie}`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n  //return timetrend.payload;\r\n};\r\n\r\nconst fetchDetailViewScatterplotData = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  bogie,\r\n  scatterplotAvg\r\n) => {\r\n  return axios\r\n    .get(\r\n      `/api/v3/locomotivesScatterBogieSpecific?name=${id}&startDate=${startDate}&endDate=${endDate}&xAxisSignal=${xAxisSignal}&yAxisSignal=${yAxisSignal}&bogie=${bogie}&avg=${scatterplotAvg}`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\n\r\n//------------------------------------------------date diff\r\nconst getDateDiff = (StartDate, EndDate) => {\r\n  if (StartDate && EndDate) {\r\n    let duration = moment.duration(\r\n      moment(EndDate.replace(/%3A/g, \":\")).diff(\r\n        moment(StartDate.replace(/%3A/g, \":\"))\r\n      )\r\n    );\r\n    let totaldays = duration.asDays();\r\n    let TotalHours = duration.asHours();\r\n    console.log(\"datediffinapijs\", totaldays);\r\n    return { totaldays, TotalHours };\r\n  }\r\n\r\n  return \"\";\r\n};\r\n\r\nconst fetchDetailViewHistogramData = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  zAxisSignal,\r\n  filter\r\n) => {\r\n  /*let { totaldays, TotalHours } = getDateDiff(startDate, endDate);\r\n  if (totaldays > 3) {\r\n  return {\r\n    locomotiveName: null,\r\n    signalConfig: null,\r\n    documentType: null,\r\n    filterType: null,\r\n    startDate: \"0001-01-01T00:00:00\",\r\n    endDate: \"0001-01-01T00:00:00\",\r\n    binInterval: 0,\r\n    data: []\r\n  };\r\n  }*/\r\n  let filterToSend = `B1B2|operationmode:[${[1, 2, 3, 4, 5]}]`;\r\n  if (filter !== undefined) {\r\n    if (filter[0].bogie === 3) {\r\n      filterToSend = `B1B2|operationmode:[${[1, 2, 3, 4, 5]}]`;\r\n    } else if (filter[0].bogie === 1) {\r\n      filterToSend = `B1|operationmode:[${[1, 2, 3, 4, 5]}]`;\r\n    } else if (filter[0].bogie === 2) {\r\n      filterToSend = `B2|operationmode:[${[1, 2, 3, 4, 5]}]`;\r\n    }\r\n  }\r\n  //return histogramdata;\r\n  return axios\r\n    .get(\r\n      `/api/v2/locomotiveHistogram?name=${id}&startDate=${startDate}&endDate=${endDate}&xAxisSignal=${xAxisSignal}&yAxisSignal=${yAxisSignal}&zAxisSignal=${zAxisSignal}&filterType=${filterToSend}&isTrainView=false`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\n\r\nconst fetchTrainViewHistogramData = (\r\n  id,\r\n  startDate,\r\n  endDate,\r\n  xAxisSignal,\r\n  yAxisSignal,\r\n  zAxisSignal,\r\n  filter\r\n) => {\r\n  let filterToSend = `B1|operationmode:[${[1, 2, 3, 4, 5]}]`;\r\n  return axios\r\n    .get(\r\n      `/api/v2/locomotiveHistogram?name=${id}&startDate=${startDate}&endDate=${endDate}&xAxisSignal=${xAxisSignal}&yAxisSignal=${yAxisSignal}&zAxisSignal=${zAxisSignal}&filterType=${filterToSend}&isTrainView=true`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\n\r\nconst fetchDetailViewMapDateSliderData = (id, startDate, endDate) => {\r\n  return axios\r\n    .get(\r\n      `/api/v2/locomotiveRunsCountDateWise?name=${id}&startDate=${startDate}&endDate=${endDate}&filterRuns=true`,\r\n      config()\r\n    )\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\n// const checkLogin = (username, password) => {\r\n//   if (username === \"admin\" && password === \"admin\") {\r\n//     return true;\r\n//   }\r\n//   return false;\r\n// };\r\n\r\nconst checkLogin = (username, password) =>\r\n  axios\r\n    .get(`/api/v1/validate?userName=${username}&password=${password}`, config())\r\n    .then(returnData)\r\n    .catch(catchError);\r\n\r\nconst changePassword = (userName, oldpassword, newpassword) => {\r\n  const data = {\r\n    userName: userName,\r\n    oldPassword: oldpassword,\r\n    newPassword: newpassword,\r\n  };\r\n  return axios\r\n    .put(\"/api/v1/resetCredential\", data, config())\r\n    .then(returnData)\r\n    .catch(catchError);\r\n};\r\nconst api = {\r\n  fetchTrainListData,\r\n  fetchMapDataList,\r\n  fetchTrainViewMapData,\r\n  fetchTrainViewHistogramData,\r\n  fetchTrainViewGraphData,\r\n  fetchDetailViewMapData,\r\n  fetchDetailViewTimetrendData,\r\n  fetchDetailViewScatterplotData,\r\n  fetchDetailViewHistogramData,\r\n  checkLogin,\r\n  changePassword,\r\n  fetchDetailViewMapDateSliderData,\r\n};\r\n\r\nexport default api;\r\n","import { takeLatest, call, put } from \"redux-saga/effects\";\r\nimport api from \"../../utils/api\";\r\nimport {\r\n  fetchTrainList,\r\n  fetchTrainListSucess,\r\n  fetchTrainListFailure,\r\n  fetchMapData,\r\n  fetchMapDataSucess,\r\n  fetchMapDataFailure\r\n} from \"./actions\";\r\nimport { FETCH_MAP_DATA, FETCH_TRAIN_LIST } from \"./constants\";\r\nimport { handleError } from \"../../utils/api-utils\";\r\n\r\nexport function* fetachTrainSaga() {\r\n  yield takeLatest(FETCH_TRAIN_LIST, fetachingTrainSaga);\r\n}\r\nexport default function* fetachingTrainSaga(action) {\r\n  try {\r\n    const { startDate, endDate } = action.payload;\r\n    const response = yield call(api.fetchTrainListData, startDate, endDate);\r\n    const TrainList = response.dat;\r\n    console.log(\"dashboard data\", TrainList);\r\n    yield put(fetchTrainListSucess(TrainList));\r\n  } catch (error) {\r\n    // yield put(fetchTrainListFailure(error));\r\n    yield put(handleError(error, fetchTrainListFailure));\r\n  }\r\n}\r\n\r\nexport function* fetachMapDataSaga() {\r\n  yield takeLatest(FETCH_MAP_DATA, fetachingMapDataSaga);\r\n}\r\nexport function* fetachingMapDataSaga(action) {\r\n  try {\r\n    const { startDate, endDate } = action.payload;\r\n    const response = yield call(api.fetchMapDataList, startDate, endDate);\r\n    console.log(\"gps data\", response.dc);\r\n    const MapData = response.dc;\r\n\r\n    // dispatch a success action to the store with the new dog\r\n    yield put(fetchMapDataSucess(MapData));\r\n  } catch (error) {\r\n    // dispatch a failure action to the store with the error\r\n    yield put(handleError(error, fetchMapDataFailure));\r\n  }\r\n}\r\n","import { takeLatest, takeEvery, call, put } from \"redux-saga/effects\";\r\nimport api from \"../../utils/api\";\r\nimport {\r\n  getDetailViewMapSlip1Success,\r\n  getDetailViewMapSlip2Success,\r\n  getDetailViewMapSpeed1Success,\r\n  getDetailViewMapSpeed2Success,\r\n  getDetailViewMapEffort1Success,\r\n  getDetailViewMapEffort2Success,\r\n  getDetailViewMapEffortDriving1Success,\r\n  getDetailViewMapEffortDriving2Success,\r\n  getDetailViewMapEffortBraking1Success,\r\n  getDetailViewMapEffortBraking2Success,\r\n  getDetailViewMapEffortBrakingMech1Success,\r\n  getDetailViewMapEffortBrakingMech2Success,\r\n  getDvMapDrivingTrailerVel1Success,\r\n  getDvMapEffortReference1Success,\r\n  getDvMapEffortReference2Success,\r\n  getDvMapSlipPower1Success,\r\n  getDvMapSlipPower2Success,\r\n  getDvMapPowerBrakingMechanical1Success,\r\n  getDvMapPowerBrakingMechanical2Success,\r\n  getDvMapAirPressureBrakeCylinder1Success,\r\n  getDvMapAirPressureBrakeCylinder2Success,\r\n  getDvMapAmplitudeTorsionalOscillation1Success,\r\n  getDvMapAmplitudeTorsionalOscillation2Success,\r\n  getDetailViewMapFailure,\r\n  getDetailViewTimetrendSlip1Success,\r\n  getDetailViewTimetrendSlip2Success,\r\n  getDetailViewTimetrendSpeed1Success,\r\n  getDetailViewTimetrendSpeed2Success,\r\n  getDetailViewTimetrendEffort1Success,\r\n  getDetailViewTimetrendEffort2Success,\r\n  getDetailViewTimetrendEffortDriving1Success,\r\n  getDetailViewTimetrendEffortDriving2Success,\r\n  getDetailViewTimetrendEffortBraking1Success,\r\n  getDetailViewTimetrendEffortBraking2Success,\r\n  getDetailViewTimetrendEffortBrakingMech1Success,\r\n  getDetailViewTimetrendEffortBrakingMech2Success,\r\n  getDvTtDrivingTrailerVel1Success,\r\n  getDvTtEffortReference1Success,\r\n  getDvTtEffortReference2Success,\r\n  getDvTtSlipPower1Success,\r\n  getDvTtSlipPower2Success,\r\n  getDvTtPowerBrakingMechanical1Success,\r\n  getDvTtPowerBrakingMechanical2Success,\r\n  getDvTtAirPressureBrakeCylinder1Success,\r\n  getDvTtAirPressureBrakeCylinder2Success,\r\n  getDvTtAmplitudeTorsionalOscillation1Success,\r\n  getDvTtAmplitudeTorsionalOscillation2Success,\r\n  getDetailViewTimetrendFailure,\r\n  getDetailViewScatterplotSuccess,\r\n  getDetailViewScatterplot2Success,\r\n  getDetailViewScatterplotFailure,\r\n  getDetailViewHistogramSuccess,\r\n  getDetailViewHistogramFailure,\r\n  getDetailViewMapDateSliderSucess,\r\n} from \"./actions\";\r\nimport {\r\n  GET_DETAILVIEW_MAP,\r\n  GET_DETAILVIEW_TIMETREND,\r\n  GET_DETAILVIEW_SCATTERPLOT,\r\n  GET_DETAILVIEW_HISTOGRAM,\r\n  GET_DETAILVIEW_MAPDATESLIDER,\r\n} from \"./constants\";\r\nimport { handleError } from \"../../utils/api-utils\";\r\n\r\n//Map\r\nexport function* getDetailViewMapSaga() {\r\n  yield takeEvery(GET_DETAILVIEW_MAP, gettingDetailViewMap);\r\n}\r\nexport function* gettingDetailViewMap(action) {\r\n  try {\r\n    const { id, startDate, endDate, docType, bogie } = action.payload;\r\n\r\n    const response = yield call(\r\n      api.fetchDetailViewMapData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      docType,\r\n      bogie\r\n    );\r\n    let GraphData = response.dc[0];\r\n    if (GraphData === undefined) GraphData = { data: [] };\r\n\r\n    if (docType === \"Slip\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapSlip1Success(GraphData));\r\n    }\r\n    if (docType === \"Slip\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapSlip2Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapSpeed1Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapSpeed2Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapEffort1Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapEffort2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapEffortDriving1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapEffortDriving2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapEffortBraking1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapEffortBraking2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"1\") {\r\n      yield put(getDetailViewMapEffortBrakingMech1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"2\") {\r\n      yield put(getDetailViewMapEffortBrakingMech2Success(GraphData));\r\n    }\r\n\r\n    if (docType === \"DrivingTrailerVel\" && bogie === \"1\") {\r\n      yield put(getDvMapDrivingTrailerVel1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortReference\" && bogie === \"1\") {\r\n      yield put(getDvMapEffortReference1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortReference\" && bogie === \"2\") {\r\n      yield put(getDvMapEffortReference2Success(GraphData));\r\n    }\r\n    if (docType === \"SlipPower\" && bogie === \"1\") {\r\n      yield put(getDvMapSlipPower1Success(GraphData));\r\n    }\r\n    if (docType === \"SlipPower\" && bogie === \"2\") {\r\n      yield put(getDvMapSlipPower2Success(GraphData));\r\n    }\r\n    if (docType === \"PowerBrakingMechanical\" && bogie === \"1\") {\r\n      yield put(getDvMapPowerBrakingMechanical1Success(GraphData));\r\n    }\r\n    if (docType === \"PowerBrakingMechanical\" && bogie === \"2\") {\r\n      yield put(getDvMapPowerBrakingMechanical2Success(GraphData));\r\n    }\r\n    if (docType === \"AirPressureBrakeCylinder\" && bogie === \"1\") {\r\n      yield put(getDvMapAirPressureBrakeCylinder1Success(GraphData));\r\n    }\r\n    if (docType === \"AirPressureBrakeCylinder\" && bogie === \"2\") {\r\n      yield put(getDvMapAirPressureBrakeCylinder2Success(GraphData));\r\n    }\r\n    if (docType === \"AmplitudeTorsionalOscillation\" && bogie === \"1\") {\r\n      yield put(getDvMapAmplitudeTorsionalOscillation1Success(GraphData));\r\n    }\r\n    if (docType === \"AmplitudeTorsionalOscillation\" && bogie === \"2\") {\r\n      yield put(getDvMapAmplitudeTorsionalOscillation2Success(GraphData));\r\n    }\r\n  } catch (error) {\r\n    yield put(handleError(error, getDetailViewMapFailure));\r\n  }\r\n}\r\n\r\nexport function* getDetailViewMapDateSliderSaga() {\r\n  yield takeEvery(GET_DETAILVIEW_MAPDATESLIDER, gettingDetailViewMapDateSlider);\r\n}\r\nexport function* gettingDetailViewMapDateSlider(action) {\r\n  try {\r\n    const { id, startDate, endDate, docType, bogie } = action.payload;\r\n\r\n    const response = yield call(\r\n      api.fetchDetailViewMapDateSliderData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      docType,\r\n      bogie\r\n    );\r\n    let GraphData = response.dc[0];\r\n\r\n    yield put(getDetailViewMapDateSliderSucess(GraphData));\r\n  } catch (error) {\r\n    yield put(handleError(error, getDetailViewMapFailure));\r\n  }\r\n}\r\n\r\n//Timetrend\r\nexport function* getDetailViewTimetrendSaga() {\r\n  yield takeEvery(GET_DETAILVIEW_TIMETREND, gettingDetailViewTimetrend);\r\n}\r\nexport function* gettingDetailViewTimetrend(action) {\r\n  try {\r\n    const { id, startDate, endDate, docType, bogie } = action.payload;\r\n\r\n    const response = yield call(\r\n      api.fetchDetailViewTimetrendData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      docType,\r\n      bogie\r\n    );\r\n    const GraphData = response.dc[0];\r\n    if (GraphData === undefined) GraphData = { data: [], config: { unit: \"\" } };\r\n\r\n    if (docType === \"Slip\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendSlip1Success(GraphData));\r\n    }\r\n    if (docType === \"Slip\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendSlip2Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendSpeed1Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendSpeed2Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendEffort1Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendEffort2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendEffortDriving1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendEffortDriving2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendEffortBraking1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendEffortBraking2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"1\") {\r\n      yield put(getDetailViewTimetrendEffortBrakingMech1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"2\") {\r\n      yield put(getDetailViewTimetrendEffortBrakingMech2Success(GraphData));\r\n    }\r\n\r\n    if (docType === \"DrivingTrailerVel\" && bogie === \"1\") {\r\n      yield put(getDvTtDrivingTrailerVel1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortReference\" && bogie === \"1\") {\r\n      yield put(getDvTtEffortReference1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortReference\" && bogie === \"2\") {\r\n      yield put(getDvTtEffortReference2Success(GraphData));\r\n    }\r\n    if (docType === \"SlipPower\" && bogie === \"1\") {\r\n      yield put(getDvTtSlipPower1Success(GraphData));\r\n    }\r\n    if (docType === \"SlipPower\" && bogie === \"2\") {\r\n      yield put(getDvTtSlipPower2Success(GraphData));\r\n    }\r\n    if (docType === \"PowerBrakingMechanical\" && bogie === \"1\") {\r\n      yield put(getDvTtPowerBrakingMechanical1Success(GraphData));\r\n    }\r\n    if (docType === \"PowerBrakingMechanical\" && bogie === \"2\") {\r\n      yield put(getDvTtPowerBrakingMechanical2Success(GraphData));\r\n    }\r\n    if (docType === \"AirPressureBrakeCylinder\" && bogie === \"1\") {\r\n      yield put(getDvTtAirPressureBrakeCylinder1Success(GraphData));\r\n    }\r\n    if (docType === \"AirPressureBrakeCylinder\" && bogie === \"2\") {\r\n      yield put(getDvTtAirPressureBrakeCylinder2Success(GraphData));\r\n    }\r\n    if (docType === \"AmplitudeTorsionalOscillation\" && bogie === \"1\") {\r\n      yield put(getDvTtAmplitudeTorsionalOscillation1Success(GraphData));\r\n    }\r\n    if (docType === \"AmplitudeTorsionalOscillation\" && bogie === \"2\") {\r\n      yield put(getDvTtAmplitudeTorsionalOscillation2Success(GraphData));\r\n    }\r\n  } catch (error) {\r\n    yield put(handleError(error, getDetailViewTimetrendFailure));\r\n  }\r\n}\r\n\r\n//Scatterplot\r\nexport function* getDetailViewScatterplotSaga() {\r\n  yield takeEvery(GET_DETAILVIEW_SCATTERPLOT, gettingDetailViewScatterplotSaga);\r\n}\r\nexport function* gettingDetailViewScatterplotSaga(action) {\r\n  try {\r\n    const {\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      bogie,\r\n      scatterplotAvg,\r\n    } = action.payload;\r\n    const response = yield call(\r\n      api.fetchDetailViewScatterplotData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      bogie,\r\n      scatterplotAvg\r\n    );\r\n    const GraphData = response.dc;\r\n    //yield put(getDetailViewScatterplotSuccess(GraphData));\r\n    //----------------\r\n    if (bogie === \"1\") {\r\n      yield put(getDetailViewScatterplotSuccess(GraphData));\r\n    }\r\n    if (bogie === \"2\") {\r\n      yield put(getDetailViewScatterplot2Success(GraphData));\r\n    }\r\n    //-----------------\r\n  } catch (error) {\r\n    yield put(handleError(error, getDetailViewScatterplotFailure));\r\n  }\r\n}\r\n\r\n//Histogram\r\nexport function* getDetailViewHistogramSaga() {\r\n  yield takeLatest(GET_DETAILVIEW_HISTOGRAM, gettingDetailViewHistogramSaga);\r\n}\r\nexport function* gettingDetailViewHistogramSaga(action) {\r\n  try {\r\n    const {\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      zAxisSignal,\r\n      filter,\r\n    } = action.payload;\r\n    const response = yield call(\r\n      api.fetchDetailViewHistogramData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      zAxisSignal,\r\n      filter\r\n    );\r\n    const GraphData = response; /*response;*/\r\n    yield put(getDetailViewHistogramSuccess(GraphData));\r\n  } catch (error) {\r\n    yield put(handleError(error, getDetailViewHistogramFailure));\r\n  }\r\n}\r\n","import { takeLatest, takeEvery, call, put } from \"redux-saga/effects\";\r\nimport api from \"../../utils/api\";\r\nimport {\r\n  getTrainViewMapSlip1Success,\r\n  getTrainViewMapSlip2Success,\r\n  getTrainViewMapSpeed1Success,\r\n  getTrainViewMapSpeed2Success,\r\n  getTrainViewMapEffort1Success,\r\n  getTrainViewMapEffort2Success,\r\n  getTrainViewMapEffortDriving1Success,\r\n  getTrainViewMapEffortDriving2Success,\r\n  getTrainViewMapEffortBraking1Success,\r\n  getTrainViewMapEffortBraking2Success,\r\n  getTrainViewMapEffortBrakingMech1Success,\r\n  getTrainViewMapEffortBrakingMech2Success,\r\n  getTrainViewMapDrivingTrailerVel1Success,\r\n  getTrainViewMapFailure,\r\n  getTrainViewHistogramSuccess,\r\n  getTrainViewHistogramFailure,\r\n} from \"./actions\";\r\nimport { GET_TRAINVIEW_MAP, GET_TRAINVIEW_HISTOGRAM } from \"./constants\";\r\nimport { handleError } from \"../../utils/api-utils\";\r\n\r\n// export function* getTrainViewMapDataSaga() {\r\n//   yield takeLatest(GET_TRAINVIEW_MAPDATA, gettingTrainViewMapDataSaga);\r\n// }\r\n// export function* gettingTrainViewMapDataSaga() {\r\n//   try {\r\n//     const response = yield call(api.fetchTrainViewMapData);\r\n//     const MapData = response.payload.data;\r\n//     yield put(getTrainViewMapDataSuccess(MapData));\r\n//   } catch (error) {\r\n//     yield put(handleError(error, getTrainViewMapDataFailure));\r\n//   }\r\n// }\r\n\r\nexport function* getTrainViewMapSaga() {\r\n  yield takeEvery(GET_TRAINVIEW_MAP, gettingTrainViewMap);\r\n}\r\nexport function* gettingTrainViewMap(action) {\r\n  console.log(\"Saga for map: \", action);\r\n  try {\r\n    const { id, startDate, endDate, docType, bogie } = action.payload;\r\n\r\n    const response = yield call(\r\n      api.fetchTrainViewMapData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      docType,\r\n      bogie\r\n    );\r\n    let GraphData = response.dc[0];\r\n    if (GraphData === undefined) GraphData = { data: [] };\r\n\r\n    if (docType === \"Slip\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapSlip1Success(GraphData));\r\n    }\r\n    if (docType === \"Slip\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapSlip2Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapSpeed1Success(GraphData));\r\n    }\r\n    if (docType === \"Speed\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapSpeed2Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapEffort1Success(GraphData));\r\n    }\r\n    if (docType === \"Effort\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapEffort2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapEffortDriving1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortDriving\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapEffortDriving2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapEffortBraking1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBraking\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapEffortBraking2Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapEffortBrakingMech1Success(GraphData));\r\n    }\r\n    if (docType === \"EffortBrakingMechanical\" && bogie === \"2\") {\r\n      yield put(getTrainViewMapEffortBrakingMech2Success(GraphData));\r\n    }\r\n    if (docType === \"DrivingTrailerVel\" && bogie === \"1\") {\r\n      yield put(getTrainViewMapDrivingTrailerVel1Success(GraphData));\r\n    }\r\n  } catch (error) {\r\n    yield put(handleError(error, getTrainViewMapFailure));\r\n  }\r\n}\r\n\r\n/*export function* getTrainViewGraphDataSaga() {\r\n  yield takeLatest(GET_TRAINVIEW_GRAPHDATA, gettingTrainViewGraphDataSaga);\r\n}\r\nexport function* gettingTrainViewGraphDataSaga(action) {\r\n  try {\r\n    const { id, startDate, endDate } = action.payload;\r\n    const response = yield call(\r\n      api.fetchTrainViewGraphData,\r\n      id,\r\n      startDate,\r\n      endDate\r\n    );\r\n    const GraphData = response.data_Constants[0];\r\n    console.log(\"TrainViewGraphData: \", response);\r\n    yield put(getTrainViewGraphDataSuccess(GraphData));\r\n  } catch (error) {\r\n    yield put(handleError(error, getTrainViewGraphDataFailure));\r\n  }\r\n}*/\r\n\r\n//Histogram\r\nexport function* getTrainViewHistogramSaga() {\r\n  yield takeLatest(GET_TRAINVIEW_HISTOGRAM, gettingTrainViewHistogramSaga);\r\n}\r\nexport function* gettingTrainViewHistogramSaga(action) {\r\n  try {\r\n    const {\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      zAxisSignal,\r\n      filter,\r\n    } = action.payload;\r\n    console.log(\"SagaInside\");\r\n    const response = yield call(\r\n      api.fetchTrainViewHistogramData,\r\n      id,\r\n      startDate,\r\n      endDate,\r\n      xAxisSignal,\r\n      yAxisSignal,\r\n      zAxisSignal,\r\n      filter\r\n    );\r\n    const GraphData = response; /*response;*/\r\n    console.log(\"SagaInside\", GraphData);\r\n    yield put(getTrainViewHistogramSuccess(GraphData));\r\n  } catch (error) {\r\n    yield put(handleError(error, getTrainViewHistogramFailure));\r\n  }\r\n}\r\n","import { takeLatest, call, put } from \"redux-saga/effects\";\r\nimport api from \"../../utils/api\";\r\nimport {\r\n  logIn,\r\n  logInSucess,\r\n  logInFailure,\r\n  changePassword,\r\n  changePassSucess,\r\n  changePassFailure\r\n} from \"./actions\";\r\nimport { LOGIN, CHANGEPASSWORD } from \"./constants\";\r\nimport { handleError } from \"../../utils/api-utils\";\r\n\r\nexport function* loginSaga() {\r\n  yield takeLatest(LOGIN, logingInSaga);\r\n}\r\nexport default function* logingInSaga(action) {\r\n  try {\r\n    const { username, password } = action.payload;\r\n    const response = yield call(\r\n      api.checkLogin,\r\n      username,\r\n      encodeURIComponent(password)\r\n    );\r\n    // console.log(\"checking login in saga\", response);\r\n    const checkLoginResponce = response.data;\r\n    yield put(logInSucess(checkLoginResponce));\r\n  } catch (error) {\r\n    // yield put(fetchTrainListFailure(error));\r\n    yield put(handleError(error, logInFailure));\r\n  }\r\n}\r\n\r\n//  for change password\r\n\r\nexport function* changePassSaga() {\r\n  yield takeLatest(CHANGEPASSWORD, changingPassSaga);\r\n}\r\nexport function* changingPassSaga(action) {\r\n  // console.log(\"checking password change in saga\", action);\r\n  try {\r\n    const { userName, oldpassword, newpassword } = action.payload;\r\n    const response = yield call(\r\n      api.changePassword,\r\n      userName,\r\n      oldpassword,\r\n      newpassword\r\n    );\r\n    console.log(\"checking password change in saga\", response);\r\n    const changePassResponce = response.data;\r\n    yield put(changePassSucess(changePassResponce));\r\n  } catch (error) {\r\n    // yield put(fetchTrainListFailure(error));\r\n    yield put(handleError(error, changePassFailure));\r\n  }\r\n}\r\n","import { all } from \"redux-saga/effects\";\r\n\r\nimport {\r\n  fetachMapDataSaga,\r\n  fetachTrainSaga,\r\n} from \"../containers/DashBoard/sagas\";\r\nimport {\r\n  getDetailViewMapSaga,\r\n  getDetailViewTimetrendSaga,\r\n  getDetailViewScatterplotSaga,\r\n  getDetailViewHistogramSaga,\r\n  getDetailViewMapDateSliderSaga,\r\n} from \"../containers/DetailTrainPage/sagas\";\r\nimport {\r\n  getTrainViewMapSaga,\r\n  getTrainViewHistogramSaga,\r\n} from \"../containers/TrainViewPage/sagas\";\r\nimport { loginSaga, changePassSaga } from \"../containers/Login/sagas\";\r\n\r\nexport function* rootSaga() {\r\n  yield all([\r\n    fetachTrainSaga(),\r\n    fetachMapDataSaga(),\r\n    getTrainViewMapSaga(),\r\n    getTrainViewHistogramSaga(),\r\n    getDetailViewMapSaga(),\r\n    getDetailViewTimetrendSaga(),\r\n    getDetailViewScatterplotSaga(),\r\n    getDetailViewHistogramSaga(),\r\n    loginSaga(),\r\n    changePassSaga(),\r\n    getDetailViewMapDateSliderSaga(),\r\n  ]);\r\n}\r\n","import { createStore, applyMiddleware, compose } from \"redux\";\r\nimport createSagaMiddleware from \"redux-saga\";\r\nimport { reducers } from \"./reducers/index\";\r\nimport { rootSaga } from \"./sagas/index\";\r\nimport { composeWithDevTools } from \"remote-redux-devtools\";\r\n\r\n// create the saga middleware\r\nconst sagaMiddleware = createSagaMiddleware();\r\n// create a redux store with our reducer above and middleware\r\nconst store = createStore(\r\n  reducers,\r\n  composeWithDevTools(applyMiddleware(sagaMiddleware))\r\n);\r\n\r\n// run the saga\r\nsagaMiddleware.run(rootSaga);\r\n\r\nexport default store;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport { Provider } from \"react-redux\";\r\nimport * as serviceWorker from './serviceWorker';\r\nimport store from './store'\r\n\r\nReactDOM.render( <Provider store={store}>\r\n  <App />\r\n </Provider>, document.getElementById('root'));\r\n\r\nserviceWorker.unregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/exportChart.29d79941.svg\";"],"sourceRoot":""}