{"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":"6EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,sDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,qDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gFCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2pICAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6ECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4HCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,sDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,qUCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,sDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,sDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8ECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2OCE3BC,EAAa,SAAAC,GACxB,IAAMC,EAAMC,IAASC,IAAIC,KAAKC,MAAM,oBAC9BC,EAAKJ,IAASC,IAAIC,KAAKC,MAAM,oBAOnC,OANkBH,IAASK,IAAIC,QAAQN,IAASC,IAAIC,KAAKC,MAAML,GAASC,EAAK,CAC3EQ,QAAS,GACTH,GAAIA,EACJI,KAAMR,IAASQ,KAAKC,IACpBC,QAASV,IAASW,IAAIC,QAEPC,YAKNC,EAAwB,SAAAC,GACnC,IAAKA,EACH,OAAO,KAET,IAAMhB,EAAMC,IAASC,IAAIC,KAAKC,MAAM,oBAC9BC,EAAKJ,IAASC,IAAIC,KAAKC,MAAM,oBAOnC,OANkBH,IAASK,IAAIW,QAAQD,EAAYhB,EAAK,CACtDQ,QAAS,GACTH,GAAIA,EACJI,KAAMR,IAASQ,KAAKC,IACpBC,QAASV,IAASW,IAAIC,QAEPC,SAASb,IAASC,IAAIC,OCvBnCe,EAAe,SAAAC,GAAA,IAAcC,EAAdD,EAAGE,UAAsBC,EAAzBH,EAAyBG,gBAAoBC,EAA7CC,OAAAC,EAAA,EAAAD,CAAAL,EAAA,wCACnBO,EAAAC,EAAAC,cAACC,EAAA,EAADL,OAAAM,OAAA,GACMP,EADN,CAEEQ,OAAQ,SAAAC,GAAK,OACS,IAApBV,GAC0D,QAA1DP,EAAsBkB,eAAeC,QAAQ,UAC3CR,EAAAC,EAAAC,cAACR,EAAcY,GAEfN,EAAAC,EAAAC,cAACO,EAAA,EAAD,CACEC,GAAI,CAAEC,SAAU,SAAUC,MAAO,CAAEC,KAAMP,EAAMQ,kBAazDtB,EAAauB,aAAe,CAC1BnB,iBAAiB,EACjBkB,SAAU,IAGGE,kBAAWxB,qDCzBXyB,cAAe,CAC5BC,OAAQ,CACNC,GAAI,kCACJC,eAAgB,kECRpBC,EAAQ,KAqBOC,MAnBf,WACE,OACEtB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,aACbvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,yBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,yBACfvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,2BCNrB,SAASC,EAAQlB,GAEf,OACEN,EAAAC,EAAAC,cAAA,OAAKqB,UAAWjB,EAAMmB,SAAW,SAAW,IAC1CzB,EAAAC,EAAAC,cAACwB,EAAD,OAPNL,EAAQ,KAWRG,EAAQT,aAAe,CACrBU,UAAU,GAMGD,gBCxBFG,EAAY,+CAAAC,OADU,2CAGtBC,EAAuB,CAClC,CACEC,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEF,YAAa,cACbC,QAAS,CACP,CACEE,WAAY,SAIlB,CACEH,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEF,YAAa,qBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,6BACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,MACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,MACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,WACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,WACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,OACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,gBACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,eACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,eACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,aACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,eACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,kBACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,QACbJ,YAAa,WACbC,QAAS,CACP,CACEC,MAAO,aAIb,CACEE,YAAa,QACbJ,YAAa,mBACbC,QAAS,CACP,CACEC,MAAO,cCjJTG,EAAcC,uBAClBC,wBAAc,SAAC/B,GAAD,OACZN,EAAAC,EAAAC,cAACoC,EAAA,UAAD,CACEC,YAAa,EAMbC,cAAe,CAAEC,IAAK,SAAUC,IAAK,SACrCC,kBAAkB,EAClBC,UAAW,UACXC,QAAS,CACPC,OAAQjB,EACRkB,mBAAmB,EACnBC,gBAAiB,SAGlB1C,EAAM2C,QAAQC,IAAI,SAACC,EAAQC,GAAT,OACjBD,EAAOE,IAAIH,IAAI,SAACI,EAAeF,GAAhB,OACbpD,EAAAC,EAAAC,cAACoC,EAAA,SAAD,CACEhE,IAAK8E,EACLG,KAAMD,EAAcE,IACpBC,YAAa,kBAAMnD,EAAMoD,QAAQJ,EAAcK,IAAI,IACnDC,WAAY,kBAAMtD,EAAMuD,cACxBhB,QAAS,CACPiB,YACExD,EAAMyD,cAAgBT,EAAcK,GAChCrD,EAAM0D,gBACN1D,EAAM2D,WACZC,aAAc,EACdC,OAAQ7D,EAAMyD,cAAgBT,EAAcK,GAAK,GAAK,aAS9DS,EAAgBhC,uBACpBC,wBAAc,SAAC/B,GAAD,OACZN,EAAAC,EAAAC,cAACoC,EAAA,UAAD,CACEC,YAAa,EACbC,cAAe,CAAEC,IAAK,UAAWC,IAAK,UAEtCG,QAAS,CACPC,OAAQjB,EACRkB,mBAAmB,QAMrBsB,6MAiBJC,kBAAoB,WAWlB,OAVoBC,EAAKjE,MAAM2C,QAC5BuB,OAAO,SAACC,GAAD,OACNA,EAAQC,KAAKC,KAAK,SAACC,GAAD,OAAuC,GAAvBA,EAAWC,aAE9C3B,IAAI,SAACuB,GACJ,OAAO3E,OAAOM,OAAO,GAAIqE,EAAS,CAChCC,KAAMD,EAAQC,KAAKF,OAAO,SAACI,GAAD,OAAuC,GAAvBA,EAAWC,wFAS3D,OACE7E,EAAAC,EAAAC,cAAA,gBAC0B4E,IAAvBC,KAAKzE,MAAM2C,SACW,OAAvB8B,KAAKzE,MAAM2C,SACX8B,KAAKzE,MAAM2C,QAAQ+B,OAAS,EAC1BhF,EAAAC,EAAAC,cAACiC,EAAD,CACER,aAAcA,EACdsD,eAAgBjF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,UACpCC,iBAAkBpF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,UACtCE,WAAYrF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,UAChCzB,QAASqB,KAAKzE,MAAMoD,QACpBG,WAAYkB,KAAKzE,MAAMuD,WACvBI,WAAYc,KAAKzE,MAAM2D,WACvBD,gBAAiBe,KAAKzE,MAAM0D,gBAC5BD,aAAcgB,KAAKzE,MAAMyD,aACzBd,aACyB6B,IAAvBC,KAAKzE,MAAM2C,SAAgD,OAAvB8B,KAAKzE,MAAM2C,QAC3C8B,KAAKzE,MAAM2C,QACX,KAIRjD,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAACkE,EAAD,CACEzC,aAAcA,EACdsD,eAAgBjF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,UACpCC,iBAAkBpF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,UACtCE,WAAYrF,EAAAC,EAAAC,cAAA,OAAKgF,MAAO,CAAEC,OAAM,qBA5DnBzF,aAqE3B2E,EAAatD,aAAe,GAKbsD,iBCzITiB,2LAEF,OACEtF,EAAAC,EAAAC,cAACqF,EAAA,EAAD,KACEvF,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAKC,GAAI,GAAIlE,UAAU,uBACrBvB,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,kCACdvB,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,OACEwF,IAAKrE,EAAQ,KACbE,UAAW,GACXoE,IAAI,oBAGR3F,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,mBAGP,IAFNwD,KAAKzE,MAAMsF,eAAetF,MAAMc,eAAeyE,QAC9C,eAIO,IAFPd,KAAKzE,MAAMsF,eAAetF,MAAMc,eAAeyE,QAC7C,yBAEA7F,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAC4F,EAAA,EAAD,CAASpF,GAAG,aAAaa,UAAU,oBAAnC,gBAGAvB,EAAAC,EAAAC,cAAC4F,EAAA,EAAD,CAASpF,GAAG,iBAAiBa,UAAU,oBAAvC,iBAJF,gBAUAvB,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAC4F,EAAA,EAAD,CAASpF,GAAG,aAAaa,UAAU,oBAAnC,gBADF,cAQF,cAINvB,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,8BACdvB,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,YAAhB,IAA6BwD,KAAKzE,MAAMyF,eAAxC,KAAgE,IADlE,mBAEmB,cA5CJC,IAAMtG,YAoDhBsB,cAAWsE,6BCZXW,sNAhCbC,kBAAoB,SAACC,EAAWC,GAC9B,GAAID,GAAaC,EAAS,CACxB,IAAMC,EAAiBF,EACjBG,EAAeF,EACfG,EAAOC,IAAOF,GAAcC,KAAKC,IAAOH,IACxCI,EAAID,IAAOE,SAASH,GAEpBI,EAAOC,KAAKC,MAAMJ,EAAEK,UAAY,IAChCC,EAAQH,KAAKC,MAAMJ,EAAEK,UAAmB,GAAPH,GACjCK,EAAUJ,KAAKC,MAAMJ,EAAEQ,aAAuB,GAARF,EAAoB,GAAPJ,EAAY,KACjEO,EAAMP,EAAO,EAAP,IAAA/E,OAAe+E,EAAf,SAA6B,GAOvC,OANAO,GAAOH,EAAQ,GAAKC,EAAU,EAAvB,IAAApF,OAA+BmF,EAA/B,UAA+C,GACtDG,GAAOF,EAAU,EAAV,IAAApF,OAAkBoF,EAAlB,YAAsC,IAEzCL,EAAO,GAAKI,EAAQ,GAAKC,EAAU,KACrCE,EAAM,IAEDA,EAGT,MAAO,4EAIP,IAAMC,EAAOpC,KAAKmB,kBAChBnB,KAAKzE,MAAM8G,UACXrC,KAAKzE,MAAM+G,SAEb,OAAOrH,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,YAAY4F,UA/BZnB,IAAMtG,iCCJlBuB,8BAAe,CAC5BqG,QAAS,CACPnG,GAAI,oCACJC,eAAgB,iCCCpBmG,IAAOC,OAAO,MACdC,UAEqBC,eACnB,SAAAA,IAAqB,IAAAC,EAAApD,EAAAzE,OAAA8H,EAAA,EAAA9H,CAAAiF,KAAA2C,GAAA,QAAAG,EAAAC,UAAA9C,OAAN+C,EAAM,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAANF,EAAME,GAAAH,UAAAG,GAAA,OACnB1D,EAAAzE,OAAAoI,EAAA,EAAApI,CAAAiF,MAAA4C,EAAA7H,OAAAqI,EAAA,EAAArI,CAAA4H,IAAAU,KAAAC,MAAAV,EAAA,CAAA5C,MAAAnD,OAASmG,MAkBXO,uBAAyB,SAACC,EAAMC,GAC9BjE,EAAKkE,SAAL3I,OAAA4I,EAAA,EAAA5I,CAAA,GAAiByI,EAAOC,KApBLjE,EAuBrBoE,oBAAsB,WAEpB,IAAMpC,EAAOgB,IAAOhD,EAAK3D,MAAMgI,SAASrC,KAAKgB,IAAOhD,EAAK3D,MAAMiI,YACzDpC,EAAIc,IAAOb,SAASH,GAEpBI,EAAOC,KAAKC,MAAMJ,EAAEK,UAAY,IAChCC,EAAQH,KAAKC,MAAMJ,EAAEK,UAAmB,GAAPH,GACjCK,EAAUJ,KAAKC,MAAMJ,EAAEQ,aAAuB,GAARF,EAAoB,GAAPJ,EAAY,KAC3DA,EAAO,GAAP,IAAA/E,OAAe+E,EAAf,SAIV,OAHOI,EAAQ,GAAKC,EAAU,EAAvB,IAAApF,OAA+BmF,EAA/B,UAA+C,GAC/CC,EAAU,EAAV,IAAApF,OAAkBoF,EAAlB,YAAsC,IAEhC,IAATL,GAAwB,IAAVI,GAA2B,IAAZC,OAEtBL,EAAO,GAAKI,EAAQ,GAAKC,EAAU,MAEnCL,EAAO,MArClBpC,EAAK3D,MAAQ,CACXiI,UAAW,KACXD,QAAS,MAJQrE,mFASnBQ,KAAKnE,MAAMiI,UACe,MAAxB9D,KAAKnE,MAAMiI,UACP,IAAIC,KAAK/D,KAAKnE,MAAMiI,WACpB,IAAIC,KAAK/D,KAAKzE,MAAMuI,UAAUE,QAAQ,OAAQ,MACpDhE,KAAKnE,MAAMgI,QACa,MAAtB7D,KAAKnE,MAAMgI,QACP,IAAIE,KAAK/D,KAAKnE,MAAMgI,SACpB,IAAIE,KAAK/D,KAAKzE,MAAMsI,QAAQG,QAAQ,OAAQ,uCA8B3C,IAAAC,EAAAjE,KACDkE,EAAUlE,KAAK4D,sBACrB,OACE3I,EAAAC,EAAAC,cAACqF,EAAA,EAAD,CAAKhE,UAAU,uBACbvB,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACE0D,GAAI,GACJC,GAAI,GACJ1D,GAAI,EACJlE,UAAU,+DAJZ,4BAQAvB,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAK0D,GAAI,GAAIC,GAAI,EAAG1D,GAAI,EAAGlE,UAAU,qBACnCvB,EAAAC,EAAAC,cAACkJ,GAAAnJ,EAAD,CAEEoJ,IACE,IAAIP,KACFvB,MACG+B,SAAS,EAAG,QACZC,MAAM,QAIbC,OAAQ,oBACRC,WAAY,QAEZjB,MAC0B,MAAxBzD,KAAKnE,MAAMiI,UACP,IAAIC,KAAK/D,KAAKnE,MAAMiI,WACpB,IAAIC,KAAK/D,KAAKzE,MAAMuI,UAAUE,QAAQ,OAAQ,MAEpDW,SAAU,SAAAlB,GAAK,OAAIQ,EAAKV,uBAAuB,YAAaE,IAC5DmB,WAAY,CACVhK,UAAW,SAAAW,GAAK,OAAIN,EAAAC,EAAAC,cAAA,QAAAJ,OAAAM,OAAA,GAAWE,EAAX,CAAkBsJ,UAAQ,SAGlD5J,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,sBACX0H,EAAuD,GAA7CjJ,EAAAC,EAAAC,cAAC2J,EAAA,EAAqBC,GAASxC,WAlCjD,KAsCEtH,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACE0D,GAAI,GACJC,GAAI,EACJ1D,GAAI,EACJlE,UAAU,qCAEVvB,EAAAC,EAAAC,cAACkJ,GAAAnJ,EAAD,CAGEoJ,IACE,IAAIP,KACFvB,MACG+B,SAAS,EAAG,QACZC,MAAM,QAGbC,OAAQ,oBACRC,WAAY,QAGZjB,MACwB,MAAtBzD,KAAKnE,MAAMgI,QACP,IAAIE,KAAK/D,KAAKnE,MAAMgI,SACpB,IAAIE,KAAK/D,KAAKzE,MAAMsI,QAAQG,QAAQ,OAAQ,MAElDW,SAAU,SAAAlB,GAAK,OAAIQ,EAAKV,uBAAuB,UAAWE,IAC1DmB,WAAY,CACVhK,UAAW,SAAAW,GAAK,OAAIN,EAAAC,EAAAC,cAAA,QAAAJ,OAAAM,OAAA,GAAWE,EAAX,CAAkBsJ,UAAQ,UAIpD5J,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACE0D,GAAI,GACJC,GAAI,GACJ1D,GAAI,EACJlE,UAAU,sCAEVvB,EAAAC,EAAAC,cAAC6J,GAAD,CACE3C,UAC0B,MAAxBrC,KAAKnE,MAAMiI,UACP9D,KAAKnE,MAAMiI,UACX9D,KAAKzE,MAAMuI,UAAUE,QAAQ,OAAQ,KAE3C1B,QACwB,MAAtBtC,KAAKnE,MAAMgI,QACP7D,KAAKnE,MAAMgI,QACX7D,KAAKzE,MAAMsI,QAAQG,QAAQ,OAAQ,OAG3C/I,EAAAC,EAAAC,cAAC8J,EAAA,EAAD,CACEzI,UAAU,cACV0I,QAAQ,UACRC,KAAK,KACLC,QAAS,kBACPnB,EAAK1I,MAAM8J,aAAapB,EAAKpI,MAAMiI,UAAWG,EAAKpI,MAAMgI,UAE3DnH,UAAWwH,GAPb,kBAzI8BjD,IAAMtG,WCdjC2K,GAAiB,iBACjBC,GAAyB,yBACzBC,GAAyB,yBAEzBC,GAAmB,mBACnBC,GAA2B,2BAC3BC,GAA2B,2BAE3BC,GAAoB,oBACpBC,GAAW,WCGXC,GAAe,SAAChC,EAAWD,GAAZ,MAAyB,CACnDkC,KAAMT,GACNU,QAAS,CAAElC,YAAWD,aAGXoC,GAAqB,SAAAC,GAAO,MAAK,CAC5CH,KAAMR,GACNW,YAGWC,GAAsB,SAAAC,GAAK,MAAK,CAC3CL,KAAMP,GACNY,UAIWC,GAAiB,SAACvC,EAAWD,GAAZ,MAAyB,CACrDkC,KAAMN,GACNO,QAAS,CAAElC,YAAWD,aAGXyC,GAAuB,SAAAC,GAAS,MAAK,CAChDR,KAAML,GACNa,cAGWC,GAAwB,SAAAJ,GAAK,MAAK,CAC7CL,KAAMJ,GACNS,UAGWK,GAAmB,SAAAC,GAAS,MAAK,CAC5CX,KAAMH,GACNc,cAGWC,GAAU,SAAC7C,EAAWD,GAAZ,MAAyB,CAC9CkC,KAAMF,GACNG,QAAS,CAAElC,YAAWD,aCjClB+C,GAAwB,kBAC5BC,YAf0B,SAAAhL,GAAK,OAAIA,EAAMiL,IAAI,kBAiB3C,SAAAjL,GAAK,OAAIA,EAAMiL,IAAI,oBASjBC,GAAoB,kBACxBF,YA3B0B,SAAAhL,GAAK,OAAIA,EAAMiL,IAAI,kBA6B3C,SAAAjL,GAAK,OAAIA,EAAMiL,IAAI,gBAGjBE,GAAoB,kBACxBH,YAjC0B,SAAAhL,GAAK,OAAIA,EAAMiL,IAAI,kBAmC3C,SAAAjL,GACE,IAAIiI,EAAYjI,EAAMiL,IAAI,aACtBG,EAAoB,KAMxB,OALiB,MAAbnD,IACFmD,EAAoBzE,IAAOsB,GACxBW,OAAO,uBACPT,QAAQ,KAAM,QAEZiD,KAIPC,GAAkB,kBACtBL,YAhD0B,SAAAhL,GAAK,OAAIA,EAAMiL,IAAI,kBAkD3C,SAAAjL,GACE,IAAIgI,EAAUhI,EAAMiL,IAAI,WACpBK,EAAkB,KAMtB,OALe,MAAXtD,IACFsD,EAAkB3E,IAAOqB,GACtBY,OAAO,uBACPT,QAAQ,KAAM,QAEZmD,eCg+CPC,GAAgB,SAAA7L,GAAK,OACzBN,EAAAC,EAAAC,cAAA,MAAAJ,OAAA4I,EAAA,EAAA5I,CAAA,CACEsM,MAAM,OACNjH,OAAO,OACPkH,QAAQ,YACRC,QAAQ,MACRC,MAAM,8BALR,QAMQ,gCAENvM,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,QACEuG,EAAE,wxBACFtF,GAAG,YAGPnB,EAAAC,EAAAC,cAAA,KACEiB,GAAG,YACHqL,OAAO,OACPC,eAAa,IACbC,KAAK,OACLC,YAAU,WAEV3M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,SAASuL,KAAK,SACrB1M,EAAAC,EAAAC,cAAA,OAAK0M,UAAU,aAEjB5M,EAAAC,EAAAC,cAAA,OAAKiB,GAAG,iBAAiBuL,KAAK,UAAUE,UAAU,YAClD5M,EAAAC,EAAAC,cAAA,KAAGiB,GAAG,mBAAmB0L,KAAK,eAAeH,KAAK,WAChD1M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,YAAY2L,EAAE,IAAIC,EAAE,IAAIX,MAAM,KAAKjH,OAAO,WAMrD6H,GAAkB,SAAA1M,GAAK,OAC3BN,EAAAC,EAAAC,cAAA,MAAAJ,OAAA4I,EAAA,EAAA5I,CAAA,CACEsM,MAAM,OACNjH,OAAO,OACPkH,QAAQ,YACRC,QAAQ,MACRC,MAAM,8BALR,QAMQ,gCAENvM,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,QACEuG,EAAE,q5BACFtF,GAAG,YAGPnB,EAAAC,EAAAC,cAAA,KACEiB,GAAG,sBACHqL,OAAO,OACPC,eAAa,IACbC,KAAK,OACLC,YAAU,WAEV3M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,SAASuL,KAAK,SACrB1M,EAAAC,EAAAC,cAAA,OAAK0M,UAAU,aAEjB5M,EAAAC,EAAAC,cAAA,OAAKiB,GAAG,iBAAiBuL,KAAK,UAAUE,UAAU,YAClD5M,EAAAC,EAAAC,cAAA,KAAGiB,GAAG,wBAAwB0L,KAAK,eAAeH,KAAK,WACrD1M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,YAAY2L,EAAE,IAAIC,EAAE,IAAIX,MAAM,KAAKjH,OAAO,WAMrD8H,GAAgB,SAAA3M,GAAK,OACzBN,EAAAC,EAAAC,cAAA,MAAAJ,OAAA4I,EAAA,EAAA5I,CAAA,CACEsM,MAAM,OACNjH,OAAO,OACPkH,QAAQ,YACRC,QAAQ,MACRC,MAAM,8BALR,QAMQ,gCAENvM,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,QACEuG,EAAE,qMACFtF,GAAG,mBAGPnB,EAAAC,EAAAC,cAAA,KACEiB,GAAG,mBACHqL,OAAO,OACPC,eAAa,IACbC,KAAK,OACLC,YAAU,WAEV3M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,mBAAmBuL,KAAK,SAC/B1M,EAAAC,EAAAC,cAAA,OAAK0M,UAAU,oBAEjB5M,EAAAC,EAAAC,cAAA,OAAKiB,GAAG,iBAAiBuL,KAAK,UAAUE,UAAU,mBAClD5M,EAAAC,EAAAC,cAAA,KAAGiB,GAAG,mBAAmB0L,KAAK,yBAAyBH,KAAK,WAC1D1M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,YAAY2L,EAAE,IAAIC,EAAE,IAAIX,MAAM,KAAKjH,OAAO,WAMrD+H,GAAU,SAAA5M,GAAK,OACnBN,EAAAC,EAAAC,cAAA,MAAAJ,OAAA4I,EAAA,EAAA5I,CAAA,CACEsM,MAAM,OACNjH,OAAO,OACPkH,QAAQ,YACRC,QAAQ,MACRC,MAAM,8BALR,QAMQ,gCAENvM,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,QACEuG,EAAE,0lBACFtF,GAAG,aAGPnB,EAAAC,EAAAC,cAAA,KACEiB,GAAG,aACHqL,OAAO,OACPC,eAAa,IACbC,KAAK,OACLC,YAAU,WAEV3M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,aAAauL,KAAK,SACzB1M,EAAAC,EAAAC,cAAA,OAAK0M,UAAU,cAEjB5M,EAAAC,EAAAC,cAAA,OAAKiB,GAAG,iBAAiBuL,KAAK,UAAUE,UAAU,aAClD5M,EAAAC,EAAAC,cAAA,KAAGiB,GAAG,mBAAmB0L,KAAK,mBAAmBH,KAAK,WACpD1M,EAAAC,EAAAC,cAAA,QAAMiB,GAAG,YAAY2L,EAAE,IAAIC,EAAE,IAAIX,MAAM,KAAKjH,OAAO,WC3pD9CgI,GACK,iBADLA,GAEG,eAFHA,GAGC,aAHDA,GAIS,qBCIhBC,oLACK,IAAA7I,EAAAQ,KACP,OACE/E,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,sBACbvB,EAAAC,EAAAC,cAACmN,GAAA,EAAD,KACErN,EAAAC,EAAAC,cAACmN,GAAA,EAAKC,OAAN,CAAa/L,UAAU,cAAvB,gBACAvB,EAAAC,EAAAC,cAACmN,GAAA,EAAKE,KAAN,MAC2B,IAAxBxI,KAAKzE,MAAMkN,SACVxN,EAAAC,EAAAC,cAACuN,EAAD,MAEAzN,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,wBACbvB,EAAAC,EAAAC,cAACqF,EAAA,EAAD,UAC4BT,IAAzBC,KAAKzE,MAAMoN,WACa,OAAzB3I,KAAKzE,MAAMoN,UACP3I,KAAKzE,MAAMoN,UAAUxK,IAAI,SAACyK,GACxB,OACE3N,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,GACJlE,UACc,UAAZoM,EAAMC,GACF,+CACA,+BAENnK,YAAa,kBAAMc,EAAKjE,MAAMoD,QAAQiK,EAAMhK,KAC5CC,WAAYW,EAAKjE,MAAMuD,YAEvB7D,EAAAC,EAAAC,cAAC4F,EAAA,EAAD,CACEpF,IAAIiN,EAAMC,GAAiB,KAC3BrM,UACc,UAAZoM,EAAMC,GAAiB,kBAAoB,IAG7C5N,EAAAC,EAAAC,cAACqF,EAAA,EAAD,CACEhE,UACc,UAAZoM,EAAMC,GACF,yBACAD,EAAMhK,IAAMY,EAAKjE,MAAMyD,aACvB,mBACA,YAEN5C,GAAIwM,EAAMhK,GACVwG,QAAS,WACP5F,EAAKjE,MAAMuN,cAAcF,EAAMhK,MAGjC3D,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,GACJlE,UAAU,gDAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,cACbvB,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,YACdvB,EAAAC,EAAAC,cAAA,OACEwF,IAAKrE,EAAQ,KACbE,UAAW,GACXoE,IAAI,gBAGR3F,EAAAC,EAAAC,cAAA,QAAMqB,UAAU,YAAYoM,EAAMhK,KAEpC3D,EAAAC,EAAAC,cAAA,YAEFF,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,8CAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,aACZ4L,KAGLnN,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,gDAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,YAAf,IAA4BoM,EAAMC,KAEpC5N,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,8CAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,aACZ4L,KAMLnN,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,gDAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,YAAYoM,EAAMG,MAEnC9N,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,8CAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,aACZ4L,KAULnN,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,gDAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,YAAYoM,EAAMI,KAEnC/N,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,8CAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,aACZ4L,KAGLnN,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEC,GAAI,EACJlE,UAAU,gDAEVvB,EAAAC,EAAAC,cAAA,OAAKqB,UAAU,YAAf,IAA4BoM,EAAMK,WAO9C,eApIEhI,IAAMtG,WA+I9B0N,GAAUrM,aAAe,CACvByM,UAAU,GAQGJ,UClJFa,GAA0B,0BAC1BC,GACX,kCACWC,GACX,kCACWC,GAA4B,4BAE5BC,GAAU,UAEVC,GAAoB,oBACpBC,GAAiC,iCACjCC,GAAiC,iCACjCC,GACX,kCACWC,GACX,kCACWC,GACX,mCACWC,GACX,mCACWC,GACX,0CACWC,GACX,0CACWC,GACX,0CACWC,GACX,0CACWC,GACX,8CACWC,GACX,8CACWC,GACX,8CACWC,GAA4B,4BAC5BC,GAAsB,sBChBtBC,GAA8B,SAACvE,GAAD,MAAc,CACvDD,KAAMyD,GACNxD,YAGWwE,GAA8B,SAACxE,GAAD,MAAc,CACvDD,KAAM0D,GACNzD,YAGWyE,GAA+B,SAACzE,GAAD,MAAc,CACxDD,KAAM2D,GACN1D,YAGW0E,GAA+B,SAAC1E,GAAD,MAAc,CACxDD,KAAM4D,GACN3D,YAGW2E,GAAgC,SAAC3E,GAAD,MAAc,CACzDD,KAAM6D,GACN5D,YAGW4E,GAAgC,SAAC5E,GAAD,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 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 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 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 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 \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 © 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":""}